def
definition
compose
show as:
view math explainer →
open explainer
Generate a durable explainer page for this declaration.
open lean source
IndisputableMonolith.Ethics.VirtueComposition on GitHub at line 25.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
used by
-
CostMorphism -
recAlg_id -
composed_virtues_preserve_sigma -
love_composed_with_justice -
virtue_composition_associative -
HasNeutralStates -
binary_is_minimal -
LocalComposition -
derivedCost -
J_additive_for_independent -
J_cost_motivates_additive_composition -
diagonal_continuous_on_range -
posting_pos -
posting_scales_compose -
Recognizer -
Recognizer -
pauli_exclusion_simple -
doubling_cascade_positive -
AdmissibleRealization -
music_admissible -
strictBiologyRealization -
strictCategoricalRealization -
strictBooleanRealization -
strictEthicsRealization -
strictModularRealization -
strictMusicRealization -
strictNarrativeRealization -
strictOrderedRealization -
strictPositiveRatioRealization -
interpret -
interpret_step -
StrictLogicRealization -
toLightweight -
compose_assoc -
compose_left_id -
RichDomainCostsCert -
solution_exists -
postingStep_of_monotone_and_ledgerJlogCost_le_Jlog1 -
involutionOp_shiftInvOp -
phi_pow43_lt
formal source
22
23def preservesSigma (v : VirtueEffect) : Prop := v.sigma_change = 0
24
25def compose (v₁ v₂ : VirtueEffect) : VirtueEffect :=
26 { sigma_change := v₁.sigma_change + v₂.sigma_change
27 jbar_multiplier := v₁.jbar_multiplier * v₂.jbar_multiplier
28 gap_multiplier := v₁.gap_multiplier * v₂.gap_multiplier
29 jbar_mult_pos := mul_pos v₁.jbar_mult_pos v₂.jbar_mult_pos
30 gap_mult_pos := mul_pos v₁.gap_mult_pos v₂.gap_mult_pos }
31
32def loveEffect : VirtueEffect :=
33 { sigma_change := 0, jbar_multiplier := 0.8, gap_multiplier := 1.5,
34 jbar_mult_pos := by norm_num, gap_mult_pos := by norm_num }
35
36def justiceEffect : VirtueEffect :=
37 { sigma_change := 0, jbar_multiplier := 1.0, gap_multiplier := 1.1,
38 jbar_mult_pos := by norm_num, gap_mult_pos := by norm_num }
39
40theorem composed_virtues_preserve_sigma
41 (v₁ v₂ : VirtueEffect)
42 (h₁ : preservesSigma v₁) (h₂ : preservesSigma v₂) :
43 preservesSigma (compose v₁ v₂) := by
44 unfold preservesSigma compose at *
45 simp [h₁, h₂]
46
47theorem love_composed_with_justice :
48 preservesSigma (compose loveEffect justiceEffect) := by
49 unfold preservesSigma compose loveEffect justiceEffect
50 norm_num
51
52theorem virtue_composition_associative
53 (v₁ v₂ v₃ : VirtueEffect) :
54 compose (compose v₁ v₂) v₃ = compose v₁ (compose v₂ v₃) := by
55 unfold compose