Skip to content

Commit 296ba49

Browse files
committed
update docs for 0.4.0
1 parent 784e327 commit 296ba49

3 files changed

Lines changed: 112 additions & 129 deletions

File tree

docs/en/index.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ see `NeutralSubstrate.lean` (the authoritative source).
88
This document provides a brief orientation only.
99
See [process](./process.md) for an overview of the Lean implementation process.
1010
See [process-040](./process-040.md) for an overview of
11-
proving NS from a conjunction (ExtensionStable ∧ InterpretivelyNonCommitted)
12-
rather than a single proposition (ExtensionStable).
11+
proving NS from a conjunction (`ExtensionStable ∧ InterpretivelyNonCommitted`)
12+
rather than a single proposition (`ExtensionStable`).
1313

1414
## Core
1515

@@ -26,14 +26,15 @@ May change without notice provided the public surface
2626
**Types:** `PrimitiveKind`, `Primitive`, `Ontology`, `Framework`
2727

2828
**Predicates:** `Neutral`, `Admissible`, `ExtensionStable`,
29-
`containsCausalOrNormative`, `extensionInconsistent`,
30-
`FrameworkVariant`, `FrameworksContradict`
29+
`InterpretivelyNonCommitted`, `containsCausalOrNormative`,
30+
`extensionInconsistent`, `FrameworkVariant`, `FrameworksContradict`
3131

3232
**Axioms:** `framework_relativity`, `neutral_primitives_undisputed`,
3333
`causal_normative_affirmed`
3434

3535
**Theorems:** `ontological_neutrality_theorem`,
3636
`not_neutral_if_causal_or_normative`, `neutral_if_only_neutral`,
37+
`only_neutral_primitives_implies_INC`,
3738
`framework_contestability_lemma`, `separate_stability`
3839

3940
## Spec

docs/en/process-040.md

Lines changed: 78 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,25 @@
66

77
The 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
1717
def 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
2423
def Neutral (S : Ontology) : Prop :=
2524
ExtensionStable S ∧ InterpretivelyNonCommitted S
2625
```
2726

28-
## Breaking Change
27+
## Why This Is a Breaking Change
2928

3029
Lean proofs are fragile under definition changes.
3130
When `Neutral` acquires a second conjunct, every proof that unfolds
@@ -37,12 +36,11 @@ Concretely, this tactic:
3736
unfold Neutral ExtensionStable extensionInconsistent
3837
```
3938

40-
currently exposes a single universally quantified proposition.
39+
previously exposed a single universally quantified proposition.
4140
After 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
4846
neutral_if_only_neutral
@@ -52,20 +50,19 @@ framework_contestability_lemma
5250
separate_stability
5351
```
5452

55-
Affected proofs in TestRegime.lean:
53+
Affected proofs in `TestRegime.lean`:
5654

57-
```lean
55+
```text
5856
toySubstrate_is_neutral
5957
incidentSubstrate_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
8078
2. 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

Comments
 (0)