@@ -69,28 +69,38 @@ function contradiction_worker(
6969
7070 if ( ! contradictory_property ) return null
7171
72- // build minimal contradiction proof
72+ return build_shortest_proof (
73+ satisfied_properties ,
74+ deduction_dict ,
75+ contradictory_property ,
76+ )
77+ }
7378
74- const contradiction : string [ ] = [ ]
79+ function build_shortest_proof (
80+ satisfied_properties : Set < string > ,
81+ deduction_dict : Record < string , NormalizedCategoryImplication > ,
82+ target_property : string ,
83+ ) {
84+ const proof : string [ ] = [ ]
7585
7686 const visited_properties = new Set < string > ( )
7787
78- function build_proof ( property : string ) {
88+ function derive ( property : string ) {
7989 if ( visited_properties . has ( property ) ) return
8090 if ( satisfied_properties . has ( property ) ) return
8191 visited_properties . add ( property )
8292
8393 const implication = deduction_dict [ property ]
8494 if ( ! implication ) throw new Error ( `Missing deduction for property: ${ property } ` )
8595
86- for ( const p of implication . assumptions ) build_proof ( p )
96+ for ( const p of implication . assumptions ) derive ( p )
8797
88- contradiction . push ( stringify_implication ( implication ) )
98+ proof . push ( stringify_implication ( implication ) )
8999 }
90100
91- build_proof ( contradictory_property )
101+ derive ( target_property )
92102
93- return contradiction
103+ return proof
94104}
95105
96106function get_normalized_category_implications ( ) {
0 commit comments