theorem
proved
reverse_involution
show as:
view math explainer →
open explainer
Read the cached plain-language explainer.
open lean source
IndisputableMonolith.CrossDomain.DevelopmentReversal on GitHub at line 38.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
used by
formal source
35def reverse : Fin 8 → Fin 8 := fun k => ⟨7 - k.val, by omega⟩
36
37/-- Reversal is an involution: reverse ∘ reverse = id. -/
38theorem reverse_involution (k : Fin 8) : reverse (reverse k) = k := by
39 apply Fin.ext
40 simp only [reverse]
41 omega
42
43/-- Reversal swaps first and last. -/
44theorem reverse_swaps_endpoints :
45 reverse ⟨0, by decide⟩ = ⟨7, by decide⟩ ∧
46 reverse ⟨7, by decide⟩ = ⟨0, by decide⟩ := by
47 refine ⟨?_, ?_⟩
48 · apply Fin.ext; simp [reverse]
49 · apply Fin.ext; simp [reverse]
50
51/-- Mid-life stages invert before early ones:
52 reverse of stage 6 (generativity) = stage 1 (autonomy),
53 reverse of stage 0 (trust) = stage 7 (integrity).
54 So going in reverse from old-age, we pass stage 6's inverse at
55 position 1 before stage 0's inverse at position 7. -/
56theorem midlife_inverts_first :
57 (reverse ⟨6, by decide⟩).val < (reverse ⟨0, by decide⟩).val := by
58 simp [reverse]
59
60structure DevelopmentReversalCert where
61 stage_count : Fintype.card EriksonStage = 8
62 two_cube : Fintype.card EriksonStage = 2 ^ 3
63 involution : ∀ k : Fin 8, reverse (reverse k) = k
64 endpoints_swap : reverse ⟨0, by decide⟩ = ⟨7, by decide⟩
65 midlife_first : (reverse ⟨6, by decide⟩).val < (reverse ⟨0, by decide⟩).val
66
67def developmentReversalCert : DevelopmentReversalCert where
68 stage_count := eriksonCount