Analysis I, Appendix A.3: The structure of proofs

Some examples of proofs

Proposition A.3.1

example {A B C D: Prop} (hAC: A C) (hCD: C D) (hDB: D B): A B := A:PropB:PropC:PropD:ProphAC:A ChCD:C DhDB:D BA B A:PropB:PropC:PropD:ProphAC:A ChCD:C DhDB:D Bh:AB A:PropB:PropC:PropD:ProphAC:A ChCD:C DhDB:D Bh:CB A:PropB:PropC:PropD:ProphAC:A ChCD:C DhDB:D Bh:DB A:PropB:PropC:PropD:ProphAC:A ChCD:C DhDB:D Bh:BB All goals completed! 🐙

Proposition A.3.2

example {x:} : x = Real.pi Real.sin (x/2) + 1 = 2 := x:x = Real.pi Real.sin (x / 2) + 1 = 2 x:h:x = Real.piReal.sin (x / 2) + 1 = 2 -- congr() produces an equality (or similar relation) from one or more existing relations, such as `h`, by substituting that relation in every location marked with a `$` sign followed by that relation, for instance `h` would be substituted at every location of `$h`. x:h:?_mvar.316 := id (congrArg (fun x => x / 2) _fvar.312)Real.sin (x / 2) + 1 = 2 x:h:?_mvar.500 := id (congrArg Real.sin _fvar.494)Real.sin (x / 2) + 1 = 2 x:h:Real.sin (x / 2) = 1Real.sin (x / 2) + 1 = 2 x:h:?_mvar.767 := id (congrArg (fun x => x + 1) _fvar.762)Real.sin (x / 2) + 1 = 2 x:h:?_mvar.767 := id (congrArg (fun x => x + 1) _fvar.762)2 = 1 + 1 All goals completed! 🐙

Proposition A.3.1, alternate proof

example {A B C D: Prop} (hAC: A C) (hCD: C D) (hDB: D B): A B := A:PropB:PropC:PropD:ProphAC:A ChCD:C DhDB:D BA B A:PropB:PropC:PropD:ProphAC:A ChCD:C DhDB:D Bh:AB A:PropB:PropC:PropD:ProphAC:A ChCD:C DhDB:D Bh:AhD:DBA:PropB:PropC:PropD:ProphAC:A ChCD:C DhDB:D Bh:AD A:PropB:PropC:PropD:ProphAC:A ChCD:C DhDB:D Bh:AhD:DB All goals completed! 🐙 A:PropB:PropC:PropD:ProphAC:A ChCD:C DhDB:D Bh:AhC:CDA:PropB:PropC:PropD:ProphAC:A ChCD:C DhDB:D Bh:AC A:PropB:PropC:PropD:ProphAC:A ChCD:C DhDB:D Bh:AhC:CD All goals completed! 🐙 All goals completed! 🐙

Proposition A.3.2, alternate proof

example {x:} : x = Real.pi Real.sin (x/2) + 1 = 2 := x:x = Real.pi Real.sin (x / 2) + 1 = 2 x:h:x = Real.piReal.sin (x / 2) + 1 = 2 x:h:x = Real.pih1:Real.sin (x / 2) = 1Real.sin (x / 2) + 1 = 2x:h:x = Real.piReal.sin (x / 2) = 1 x:h:x = Real.pih1:Real.sin (x / 2) = 1Real.sin (x / 2) + 1 = 2 x:h:x = Real.pih1:Real.sin (x / 2) = 11 + 1 = 2 All goals completed! 🐙 x:h:x = Real.pih2:x / 2 = Real.pi / 2Real.sin (x / 2) = 1x:h:x = Real.pix / 2 = Real.pi / 2 x:h:x = Real.pih2:x / 2 = Real.pi / 2Real.sin (x / 2) = 1 All goals completed! 🐙 All goals completed! 🐙

Proposition A.3.3

example {r:} (h: 0 < r) (h': r < 1) : Summable (fun n: n * r^n) := r:h:0 < rh':r < 1Summable fun n => n * r ^ n r:h:0 < rh':r < 1∀ᶠ (n : ) in Filter.atTop, n * r ^ n 0r:h:0 < rh':r < 1Filter.Tendsto (fun n => (n + 1) * r ^ (n + 1) / n * r ^ n) Filter.atTop (nhds r) r:h:0 < rh':r < 1∀ᶠ (n : ) in Filter.atTop, n * r ^ n 0 r:h:0 < rh':r < 1 a, (b : ), a b ¬b = 0 (r = 0 b = 0) r:h:0 < rh':r < 1 (b : ), 1 b ¬b = 0 (r = 0 b = 0) r:h:0 < rh':r < 1b:hb:1 b¬b = 0 (r = 0 b = 0) All goals completed! 🐙 r:h:0 < rh':r < 1hconv:Filter.Tendsto (fun n => r * ((n + 1) / n)) Filter.atTop (nhds r)Filter.Tendsto (fun n => (n + 1) * r ^ (n + 1) / n * r ^ n) Filter.atTop (nhds r)r:h:0 < rh':r < 1Filter.Tendsto (fun n => r * ((n + 1) / n)) Filter.atTop (nhds r) r:h:0 < rh':r < 1hconv:Filter.Tendsto (fun n => r * ((n + 1) / n)) Filter.atTop (nhds r)Filter.Tendsto (fun n => (n + 1) * r ^ (n + 1) / n * r ^ n) Filter.atTop (nhds r) r:h:0 < rh':r < 1hconv:Filter.Tendsto (fun n => r * ((n + 1) / n)) Filter.atTop (nhds r)(fun n => r * ((n + 1) / n)) =ᶠ[Filter.atTop] fun n => (n + 1) * r ^ (n + 1) / n * r ^ n r:h:0 < rh':r < 1hconv:Filter.Tendsto (fun n => r * ((n + 1) / n)) Filter.atTop (nhds r) a, (b : ), a b r * ((b + 1) / b) = |b + 1| * |r| ^ (b + 1) / (b * |r| ^ b) r:h:0 < rh':r < 1hconv:Filter.Tendsto (fun n => r * ((n + 1) / n)) Filter.atTop (nhds r) (b : ), 1 b r * ((b + 1) / b) = |b + 1| * |r| ^ (b + 1) / (b * |r| ^ b) r:h:0 < rh':r < 1hconv:Filter.Tendsto (fun n => r * ((n + 1) / n)) Filter.atTop (nhds r)b:hb:1 br * ((b + 1) / b) = |b + 1| * |r| ^ (b + 1) / (b * |r| ^ b) have : b > 0 := r:h:0 < rh':r < 1Summable fun n => n * r ^ n All goals completed! 🐙 have hb1 : (b+1:) > 0 := r:h:0 < rh':r < 1Summable fun n => n * r ^ n All goals completed! 🐙 r:h:0 < rh':r < 1hconv:Filter.Tendsto (fun n => r * ((n + 1) / n)) Filter.atTop (nhds r)b:hb:1 bthis:_fvar.25009 > 0 := ?_mvar.25050hb1:_fvar.25009 + 1 > 0 := ?_mvar.27080r * ((b + 1) / b) = (b + 1) * r ^ (b + 1) / (b * r ^ b) r:h:0 < rh':r < 1hconv:Filter.Tendsto (fun n => r * ((n + 1) / n)) Filter.atTop (nhds r)b:hb:1 bthis:_fvar.25009 > 0 := ?_mvar.25050hb1:_fvar.25009 + 1 > 0 := ?_mvar.27080r * (b + 1) * (b * r ^ b) = (b + 1) * r ^ (b + 1) * b All goals completed! 🐙 r:h:0 < rh':r < 1hconv:Filter.Tendsto (fun n => (n + 1) / n) Filter.atTop (nhds 1)Filter.Tendsto (fun n => r * ((n + 1) / n)) Filter.atTop (nhds r)r:h:0 < rh':r < 1Filter.Tendsto (fun n => (n + 1) / n) Filter.atTop (nhds 1) r:h:0 < rh':r < 1hconv:Filter.Tendsto (fun n => (n + 1) / n) Filter.atTop (nhds 1)Filter.Tendsto (fun n => r * ((n + 1) / n)) Filter.atTop (nhds r) r:h:0 < rh':r < 1hconv:Filter.Tendsto (fun n => (n + 1) / n) Filter.atTop (nhds 1)r = r * 1 All goals completed! 🐙 r:h:0 < rh':r < 1hconv:Filter.Tendsto (fun n => 1 + 1 / n) Filter.atTop (nhds 1)Filter.Tendsto (fun n => (n + 1) / n) Filter.atTop (nhds 1)r:h:0 < rh':r < 1Filter.Tendsto (fun n => 1 + 1 / n) Filter.atTop (nhds 1) r:h:0 < rh':r < 1hconv:Filter.Tendsto (fun n => 1 + 1 / n) Filter.atTop (nhds 1)Filter.Tendsto (fun n => (n + 1) / n) Filter.atTop (nhds 1) r:h:0 < rh':r < 1hconv:Filter.Tendsto (fun n => 1 + 1 / n) Filter.atTop (nhds 1)(fun n => 1 + 1 / n) =ᶠ[Filter.atTop] fun n => (n + 1) / n r:h:0 < rh':r < 1hconv:Filter.Tendsto (fun n => 1 + 1 / n) Filter.atTop (nhds 1) a, (b : ), a b 1 + (↑b)⁻¹ = (b + 1) / b r:h:0 < rh':r < 1hconv:Filter.Tendsto (fun n => 1 + 1 / n) Filter.atTop (nhds 1) (b : ), 1 b 1 + (↑b)⁻¹ = (b + 1) / b r:h:0 < rh':r < 1hconv:Filter.Tendsto (fun n => 1 + 1 / n) Filter.atTop (nhds 1)b:hb:1 b1 + (↑b)⁻¹ = (b + 1) / b have : (b:) > 0 := r:h:0 < rh':r < 1Summable fun n => n * r ^ n All goals completed! 🐙 All goals completed! 🐙 r:h:0 < rh':r < 1hconv:Filter.Tendsto (fun n => 1 / n) Filter.atTop (nhds 0)Filter.Tendsto (fun n => 1 + 1 / n) Filter.atTop (nhds 1)r:h:0 < rh':r < 1Filter.Tendsto (fun n => 1 / n) Filter.atTop (nhds 0) r:h:0 < rh':r < 1hconv:Filter.Tendsto (fun n => 1 / n) Filter.atTop (nhds 0)Filter.Tendsto (fun n => 1 + 1 / n) Filter.atTop (nhds 1) r:h:0 < rh':r < 1hconv:Filter.Tendsto (fun n => 1 / n) Filter.atTop (nhds 0)1 = 1 + 0 All goals completed! 🐙 All goals completed! 🐙

Proposition A.3.1, third proof

example {A B C D: Prop} (hAC: A C) (hCD: C D) (hDB: D B): A B := A:PropB:PropC:PropD:ProphAC:A ChCD:C DhDB:D BA B A:PropB:PropC:PropD:ProphAC:A ChCD:C DhDB:D Bh:AB A:PropB:PropC:PropD:ProphAC:A ChCD:C DhDB:D Bh:AhD:DBA:PropB:PropC:PropD:ProphAC:A ChCD:C DhDB:D Bh:AD A:PropB:PropC:PropD:ProphAC:A ChCD:C DhDB:D Bh:AhD:DB All goals completed! 🐙 A:PropB:PropC:PropD:ProphAC:A ChCD:C DhDB:D Bh:AhC:_fvar.53662 := @_fvar.53664 _fvar.53668D All goals completed! 🐙

Proposition A.3.4

example {A B C D E F G H I:Prop} (hAE: A E) (hEB: E B F) (hADG : A G D) (hHI: H I) (hFHC : F H C) (hAHG : A H G) (hIG: I G) (hIGC: G C) : A B C D := A:PropB:PropC:PropD:PropE:PropF:PropG:PropH:PropI:ProphAE:A EhEB:E B FhADG:A G DhHI:H IhFHC:F H ChAHG:A H GhIG:I GhIGC:G CA B C D A:PropB:PropC:PropD:PropE:PropF:PropG:PropH:PropI:ProphAE:A EhEB:E B FhADG:A G DhHI:H IhFHC:F H ChAHG:A H GhIG:I GhIGC:G ChA:AhB:BC D A:PropB:PropC:PropD:PropE:PropF:PropG:PropH:PropI:ProphAE:A EhEB:E B FhADG:A G DhHI:H IhFHC:F H ChAHG:A H GhIG:I GhIGC:G ChA:AhB:BhE:_fvar.53751 := @_fvar.53756 _fvar.53788C D A:PropB:PropC:PropD:PropE:PropF:PropG:PropH:PropI:ProphAE:A EhEB:E B FhADG:A G DhHI:H IhFHC:F H ChAHG:A H GhIG:I GhIGC:G ChA:AhB:BhE:_fvar.53751 := @_fvar.53756 _fvar.53788hF:_fvar.53752 := @_fvar.53757 C D A:PropB:PropC:PropD:PropE:PropF:PropG:PropH:PropI:ProphAE:A EhEB:E B FhADG:A G DhHI:H IhFHC:F H ChAHG:A H GhIG:I GhIGC:G ChA:AhB:BhE:_fvar.53751 := @_fvar.53756 _fvar.53788hF:_fvar.53752 := @_fvar.53757 hCG:C GC DA:PropB:PropC:PropD:PropE:PropF:PropG:PropH:PropI:ProphAE:A EhEB:E B FhADG:A G DhHI:H IhFHC:F H ChAHG:A H GhIG:I GhIGC:G ChA:AhB:BhE:_fvar.53751 := @_fvar.53756 _fvar.53788hF:_fvar.53752 := @_fvar.53757 C G A:PropB:PropC:PropD:PropE:PropF:PropG:PropH:PropI:ProphAE:A EhEB:E B FhADG:A G DhHI:H IhFHC:F H ChAHG:A H GhIG:I GhIGC:G ChA:AhB:BhE:_fvar.53751 := @_fvar.53756 _fvar.53788hF:_fvar.53752 := @_fvar.53757 hCG:C GC D A:PropB:PropC:PropD:PropE:PropF:PropG:PropH:PropI:ProphAE:A EhEB:E B FhADG:A G DhHI:H IhFHC:F H ChAHG:A H GhIG:I GhIGC:G ChA:AhB:BhE:_fvar.53751 := @_fvar.53756 _fvar.53788hF:_fvar.53752 := @_fvar.53757 hC:ChG:GC D A:PropB:PropC:PropD:PropE:PropF:PropG:PropH:PropI:ProphAE:A EhEB:E B FhADG:A G DhHI:H IhFHC:F H ChAHG:A H GhIG:I GhIGC:G ChA:AhB:BhE:_fvar.53751 := @_fvar.53756 _fvar.53788hF:_fvar.53752 := @_fvar.53757 hC:ChG:GhD:_fvar.53750 := @_fvar.53758 _fvar.53788 _fvar.53894C D All goals completed! 🐙 A:PropB:PropC:PropD:PropE:PropF:PropG:PropH:PropI:ProphAE:A EhEB:E B FhADG:A G DhFHC:F H ChAHG:A H GhIG:I GhIGC:G ChA:AhB:BhE:_fvar.53751 := @_fvar.53756 _fvar.53788hF:_fvar.53752 := @_fvar.53757 hH:HC GA:PropB:PropC:PropD:PropE:PropF:PropG:PropH:PropI:ProphAE:A EhEB:E B FhADG:A G DhFHC:F H ChAHG:A H GhIG:I GhIGC:G ChA:AhB:BhE:_fvar.53751 := @_fvar.53756 _fvar.53788hF:_fvar.53752 := @_fvar.53757 hI:IC G A:PropB:PropC:PropD:PropE:PropF:PropG:PropH:PropI:ProphAE:A EhEB:E B FhADG:A G DhFHC:F H ChAHG:A H GhIG:I GhIGC:G ChA:AhB:BhE:_fvar.53751 := @_fvar.53756 _fvar.53788hF:_fvar.53752 := @_fvar.53757 hH:HC G A:PropB:PropC:PropD:PropE:PropF:PropG:PropH:PropI:ProphAE:A EhEB:E B FhADG:A G DhFHC:F H ChAHG:A H GhIG:I GhIGC:G ChA:AhB:BhE:_fvar.53751 := @_fvar.53756 _fvar.53788hF:_fvar.53752 := @_fvar.53757 hH:HhC:?_mvar.53939 := @_fvar.53760 C G A:PropB:PropC:PropD:PropE:PropF:PropG:PropH:PropI:ProphAE:A EhEB:E B FhADG:A G DhFHC:F H ChAHG:A H GhIG:I GhIGC:G ChA:AhB:BhE:_fvar.53751 := @_fvar.53756 _fvar.53788hF:_fvar.53752 := @_fvar.53757 hH:HhC:?_mvar.53939 := @_fvar.53760 hG:?_mvar.53951 := @_fvar.53761 C G All goals completed! 🐙 A:PropB:PropC:PropD:PropE:PropF:PropG:PropH:PropI:ProphAE:A EhEB:E B FhADG:A G DhFHC:F H ChAHG:A H GhIG:I GhIGC:G ChA:AhB:BhE:_fvar.53751 := @_fvar.53756 _fvar.53788hF:_fvar.53752 := @_fvar.53757 hI:IhG:?_mvar.53969 := @_fvar.53762 _fvar.53935C G A:PropB:PropC:PropD:PropE:PropF:PropG:PropH:PropI:ProphAE:A EhEB:E B FhADG:A G DhFHC:F H ChAHG:A H GhIG:I GhIGC:G ChA:AhB:BhE:_fvar.53751 := @_fvar.53756 _fvar.53788hF:_fvar.53752 := @_fvar.53757 hI:IhG:?_mvar.53969 := @_fvar.53762 _fvar.53935hC:?_mvar.53975 := @_fvar.53763 _fvar.53970C G All goals completed! 🐙

Proposition A.3.5

example {A B C D:Prop} (hBC: B C) (hAD: A D) (hCD: D ¬ C) : A ¬ B := A:PropB:PropC:PropD:ProphBC:B ChAD:A DhCD:D ¬CA ¬B A:PropB:PropC:PropD:ProphBC:B ChAD:A DhCD:D ¬ChA:A¬B A:PropB:PropC:PropD:ProphBC:B ChAD:A DhCD:D ¬ChA:AhB:BFalse A:PropB:PropC:PropD:ProphBC:B ChAD:A DhCD:D ¬ChA:AhB:BhC:_fvar.54021 := @_fvar.54023 _fvar.54033False A:PropB:PropC:PropD:ProphBC:B ChAD:A DhCD:D ¬ChA:AhB:BhC:_fvar.54021 := @_fvar.54023 _fvar.54033hD:_fvar.54022 := @_fvar.54024 _fvar.54028False A:PropB:PropC:PropD:ProphBC:B ChAD:A DhCD:D ¬ChA:AhB:BhC:_fvar.54021 := @_fvar.54023 _fvar.54033hD:_fvar.54022 := @_fvar.54024 _fvar.54028hC':¬_fvar.54021 := @_fvar.54025 _fvar.54042False All goals completed! 🐙