66
77The SE-100 paper defines neutrality as requiring two properties:
88
9- - ** EXT** - Extension Stability: S remains consistent when extended
9+ - ** EXT** Extension Stability: S remains consistent when extended
1010 by any admissible framework
11- - ** INC** - Interpretive Non-Commitment: S does not assert any
11+ - ** INC** Interpretive Non-Commitment: S does not assert any
1212 framework-variant proposition at the substrate layer
1313
14- The current formalization defines :
14+ The 0.3.0 formalization encoded EXT only :
1515
1616``` lean
1717def Neutral (S : Ontology) : Prop := ExtensionStable S
1818```
1919
20- It encodes EXT only.
21- The paper's full neutrality requires:
20+ The 0.4.0 formalization encodes both:
2221
2322``` lean
2423def Neutral (S : Ontology) : Prop :=
2524 ExtensionStable S ∧ InterpretivelyNonCommitted S
2625```
2726
28- ## Breaking Change
27+ ## Why This Is a Breaking Change
2928
3029Lean proofs are fragile under definition changes.
3130When ` Neutral ` acquires a second conjunct, every proof that unfolds
@@ -37,12 +36,11 @@ Concretely, this tactic:
3736unfold Neutral ExtensionStable extensionInconsistent
3837```
3938
40- currently exposes a single universally quantified proposition.
39+ previously exposed a single universally quantified proposition.
4140After 0.4.0 it exposes a conjunction.
42- Every proof using this pattern
43- must be updated to handle both conjuncts.
41+ Every proof using this pattern required updating to handle both conjuncts.
4442
45- Affected proofs in Core.lean:
43+ Affected proofs in ` Core.lean ` :
4644
4745``` text
4846neutral_if_only_neutral
@@ -52,20 +50,19 @@ framework_contestability_lemma
5250separate_stability
5351```
5452
55- Affected proofs in TestRegime.lean:
53+ Affected proofs in ` TestRegime.lean ` :
5654
57- ``` lean
55+ ``` text
5856toySubstrate_is_neutral
5957incidentSubstrate_is_neutral
6058```
6159
62- So 0.4.0 is a minor version bump, not a patch;
63- it requires coordinated updates across multiple files.
60+ This is why 0.4.0 is a minor version bump, not a patch.
6461
6562## Build Order
6663
67- Make additive changes first, breaking changes last.
68- Keeps build green as long as possible during transition.
64+ Additive changes first, breaking changes last.
65+ This kept the build green as long as possible during transition.
6966
7067### Phase 1. Additive (no breakage)
7168
@@ -76,131 +73,108 @@ Keeps build green as long as possible during transition.
7673 ∀ p ∈ S, ¬FrameworkVariant p
7774
7875 WHY: Pure addition. Nothing depends on it yet.
76+ Build stayed green after this step.
7977
80782. Prove standalone lemma in Core Section 5
8179
8280 theorem only_neutral_primitives_implies_INC :
8381 ∀ S, containsCausalOrNormative S = false →
8482 InterpretivelyNonCommitted S
8583
86- WHY: Establishes that INC follows from the same condition
87- as the upper bound of the main theorem .
84+ WHY: Established that INC follows from neutral_primitives_undisputed
85+ alone. Answered the open question: no new axiom needed for Phase 2 .
8886
89- 3. Add NS_ID_DEF_INTERPRETIVELY_NON_COMMITTED to Spec
90- 4. Export InterpretivelyNonCommitted from Surface
91- 5. Add #check to TestBasic
92- Build and confirm green.
87+ 3. Added NS_ID_DEF_INTERPRETIVELY_NON_COMMITTED to Spec
88+ 4. Exported InterpretivelyNonCommitted from Surface
89+ 5. Added #check to TestBasic
90+ Build confirmed green before Phase 2 .
9391```
9492
9593### Phase 2. Breaking (change Neutral, fix all downstream)
9694
97- All of these are done in a single editing session.
95+ All changes made in a single editing session.
96+ Build not committed until fully green.
9897
9998``` text
100- 1. Update Neutral definition in Core Section 2
101-
99+ 1. Updated Neutral definition in Core Section 2
102100 def Neutral (S : Ontology) : Prop :=
103101 ExtensionStable S ∧ InterpretivelyNonCommitted S
104102
105- Build will temporarily fail on steps 7-12 below.
106-
107- 2. Update `neutral_if_only_neutral`
108- Establish both ExtensionStable and InterpretivelyNonCommitted.
109- The INC direction uses only_neutral_primitives_implies_INC (from step 2).
110- The EXT direction is unchanged.
111-
112- 3. Update `not_neutral_if_causal_or_normative`
113- Goal shape changes. May need to extract EXT conjunct explicitly.
114- Check whether proof closes or needs adjustment.
103+ 2. Updated neutral_if_only_neutral
104+ constructor splits into EXT and INC conjuncts.
105+ INC direction: exact only_neutral_primitives_implies_INC S h_only_neutral
106+ EXT direction: unchanged from 0.3.0.
115107
116- 4. Update `ontological_neutrality_theorem`
117- Both directions affected. Rebuild from updated helper theorems.
108+ 3. Updated not_neutral_if_causal_or_normative
109+ Extracted h_neutral.1 (EXT conjunct) before proceeding.
110+ INC conjunct never needed for this direction.
118111
119- 5. Update `framework_contestability_lemma`
120- Add INC violation as second conclusion.
121- Remove "deferred" note from doc comment .
112+ 4. Updated ontological_neutrality_theorem
113+ No change to proof body; forward and backward still delegate
114+ to not_neutral_if_causal_or_normative and neutral_if_only_neutral .
122115
123- 6. Update `separate_stability`
124- Uses Neutral - check whether proof closes.
125- Likely minor adjustment.
116+ 5. Updated framework_contestability_lemma
117+ Now uses INC directly: h_neutral.2 p hp_in_S h_variant
118+ Both EXT and INC violations documented.
119+ "deferred to 0.4.0" note removed.
126120
127- 7. Update `TestRegime` proofs
128- `toySubstrate_is_neutral` and `incidentSubstrate_is_neutral`
129- both call `neutral_if_only_neutral`. If that proof
130- strategy changes, these may need updating.
121+ 6. Updated separate_stability
122+ Uses h_neutral.1 to extract EXT before applying to F1 and F2.
131123
132- Build green before committing.
124+ 7. TestRegime proofs closed without changes.
125+ neutral_if_only_neutral signature unchanged; proofs still apply.
133126```
134127
135- ## The INC Proof Question
136-
137- The key question for Phase 2 is whether the INC direction of the
138- updated ` neutral_if_only_neutral ` requires a new axiom.
139-
140- The claim to prove is:
141-
142- ``` text
143- containsCausalOrNormative S = false →
144- InterpretivelyNonCommitted S
145- ```
128+ ## The INC Proof Question Resolved
146129
147- Which unfolds to:
130+ The key question for Phase 2 was whether the INC direction of the
131+ updated ` neutral_if_only_neutral ` required a new axiom.
148132
149- ``` lean
150- containsCausalOrNormative S = false →
151- ∀ p ∈ S, ¬FrameworkVariant p
152- ```
133+ ** Answer: no new axiom needed.**
153134
154- Which unfolds to:
135+ The proof of ` only_neutral_primitives_implies_INC ` only needs to
136+ negate the denial half of ` FrameworkVariant ` :
155137
156138``` lean
157- containsCausalOrNormative S = false →
158- ∀ p ∈ S, ¬ ∃ F1 F2, Admissible F1 ∧ Admissible F2 ∧
159- F1.affirms p = true ∧ F2.denies p = true
139+ FrameworkVariant p :=
140+ ∃ F1 F2, Admissible F1 ∧ Admissible F2 ∧
141+ F1.affirms p = true ∧ F2.denies p = true
160142```
161143
162- For p ∈ S where containsCausalOrNormative S = false, we know p.kind = neutral.
163- We need to show no admissible framework denies a neutral primitive
164- (from neutral_primitives_undisputed) AND no admissible framework affirms
165- a neutral primitive in a way that creates variance .
144+ To prove ` ¬FrameworkVariant p ` for a neutral primitive, it suffices
145+ to show no admissible F2 can satisfy ` F2. denies p = true ` .
146+ This follows directly from ` neutral_primitives_undisputed ` .
147+ The affirmation half ( ` F1.affirms p ` ) is never consulted .
166148
167- The denial half follows from neutral_primitives_undisputed.
168- The affirmation half is not currently axiomatized.
169-
170- This means Phase 2 may require a new axiom:
149+ The proof:
171150
172151``` lean
173- axiom neutral_primitives_not_affirmed_as_variant :
174- ∀ p : Primitive, p.kind = PrimitiveKind.neutral →
175- ∀ F : Framework, Admissible F → F.affirms p = false
176- ```
177-
178- Or FrameworkVariant can be weakened to only require
179- the denial direction, making it provably false for neutral primitives
180- using neutral_primitives_undisputed alone.
181- Attempt proof without a new axiom first.
182- Add axiom if proof does not close.
183-
184- ## No Changes in 0.4.0
185-
186- ``` text
187- Spec IDs for existing theorems: stable, no rename
188- Surface exports for existing names: stable, additive only
189- NeutralSubstrate.lean §1-§4: structure unchanged
190- TestBasic type checks for existing names: stable
191- CITATION.cff, lakefile.toml: version bump only
152+ theorem only_neutral_primitives_implies_INC :
153+ ∀ S : Ontology, containsCausalOrNormative S = false →
154+ InterpretivelyNonCommitted S := by
155+ intro S h_only_neutral
156+ unfold InterpretivelyNonCommitted FrameworkVariant
157+ intro p hp_in_S
158+ intro ⟨_F1, F2, _hF1_adm, hF2_adm, _hF1_affirms, hF2_denies⟩
159+ have h_all_neutral := any_false_implies_none S _ h_only_neutral
160+ have hp_neutral_kind : (p.kind != PrimitiveKind.neutral) = false :=
161+ h_all_neutral p hp_in_S
162+ simp at hp_neutral_kind
163+ have h_not_denied := neutral_primitives_undisputed p hp_neutral_kind F2 hF2_adm
164+ rw [h_not_denied] at hF2_denies
165+ contradiction
192166```
193167
194168## Definition of Done for 0.4.0
195169
196170``` text
197- DONE lake build - 0 errors
198- DONE lake build TestBasic - all #check entries pass
199- DONE lake build TestRegime- incident example still proves separate_stability
200- DONE Neutral defined as EXT ∧ INC
201- DONE framework_contestability_lemma proves both violations
202- DONE "deferred to 0.4.0" note removed from all doc comments
203- DONE NeutralSubstrate.lean Section 2 updated with InterpretivelyNonCommitted
204- DONE CHANGELOG.md 0.4.0 section added
205- DONE CITATION.cff and lakefile.toml bumped to 0.4.0
171+ DONE lake build 0 errors
172+ DONE lake build TestBasic all #check entries pass
173+ DONE lake build TestRegime incident example still proves separate_stability
174+ DONE Neutral defined as EXT ∧ INC
175+ DONE framework_contestability_lemma proves both EXT and INC violations
176+ DONE "deferred to 0.4.0" note removed from all doc comments
177+ DONE NeutralSubstrate.lean Section 2 updated with InterpretivelyNonCommitted
178+ DONE CHANGELOG.md 0.4.0 section added
179+ DONE CITATION.cff and lakefile.toml bumped to 0.4.0
206180```
0 commit comments