Documentation

Pretty.Claims.ResolveValid

Validity theorems #

theorem Resolve_valid :
∀ {α : Type} {F : Factory α} {d : Doc} {c i : } {ms : List Meas} {h : ms []} {D : List Doc} {m : Meas}, Resolve F d c i (MeasureSet.set ms h)Widen d Dm msd_choiceless, d_choiceless D MeasRender F d_choiceless c i m

The validity theorem for non-tainted result (the first part of Theorem 5.8)

theorem ResolveConcat_valid :
∀ {α : Type} {F : Factory α} {ms : List Meas} {d₂ : Doc} {i : } {ms_r : List Meas} {h_non_empty_r : ms_r []} {d₁ : Doc} {L₁ L₂ : List Doc} {c : } {orig_ms : List Meas} {h_non_empty : orig_ms []} (m : Meas), ResolveConcat F ms d₂ i (MeasureSet.set ms_r h_non_empty_r)Widen d₁ L₁Widen d₂ L₂Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)(∀ (x : Meas), x msx orig_ms) → m ms_rd_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
theorem Resolve_tainted_valid :
∀ {α : Type} {F : Factory α} {d : Doc} {c i : } {m : Meas} {D : List Doc}, Resolve F d c i (MeasureSet.tainted m)Widen d Dd_choiceless, d_choiceless D MeasRender F d_choiceless c i m

The validity theorem for tainted result (the second part of Theorem 5.8)

theorem ResolveConcat_tainted_valid :
∀ {α : Type} {F : Factory α} {ms : List Meas} {d₂ : Doc} {i : } {m : Meas} {d₁ : Doc} {L₁ L₂ : List Doc} {c : } {orig_ms : List Meas} {h_non_empty : orig_ms []}, ResolveConcat F ms d₂ i (MeasureSet.tainted m)Widen d₁ L₁Widen d₂ L₂Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)(∀ (x : Meas), x msx orig_ms) → d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m