44for maximum theorem proving coverage when resolving cognitive dissonance.
55"""
66
7+ import logging
78import time
8- from typing import Any , Optional , Dict , List , Tuple
99from dataclasses import dataclass
1010from enum import Enum
11- import logging
11+ from typing import Any
1212
13- from .lean_translator import LeanTranslator , LeanStatement
14- from .lean_prover import LeanProver , ProofResult as LeanProofResult
15- from .translator import ClaimTranslator
13+ from .lean_prover import LeanProver
14+ from .lean_prover import ProofResult as LeanProofResult
15+ from .lean_translator import LeanTranslator
1616from .prover import CoqProver
17+ from .translator import ClaimTranslator
1718from .types import Claim , PropertyType
1819
1920logger = logging .getLogger (__name__ )
@@ -31,8 +32,8 @@ class HybridProofResult:
3132 """Result from hybrid Lean/Coq prover."""
3233 proven : bool
3334 prover_used : ProverBackend
34- primary_result : Optional [ object ] = None
35- fallback_result : Optional [ object ] = None
35+ primary_result : object | None = None
36+ fallback_result : object | None = None
3637 combined_confidence : float = 0.0
3738
3839
@@ -48,13 +49,13 @@ def __init__(self, prefer_lean: bool = True, use_fallback: bool = True):
4849 self .coq_prover = CoqProver ()
4950
5051 def resolve_conflict (
51- self , claims : List [ Tuple [str , str , str ]]
52+ self , claims : list [ tuple [str , str , str ]]
5253 ) -> HybridProofResult :
5354 """Resolve a conflict between claims using hybrid approach.
54-
55+
5556 Args:
5657 claims: List of (agent_id, claim_text, claim_type) tuples
57-
58+
5859 Returns:
5960 HybridProofResult with proof status and prover backend used
6061 """
@@ -68,7 +69,7 @@ def resolve_conflict(
6869 primary_result = lean_result ,
6970 combined_confidence = 0.95 ,
7071 )
71-
72+
7273 # Fallback to Coq
7374 if self .use_fallback :
7475 coq_result = self ._try_coq_proof (claims )
@@ -89,7 +90,7 @@ def resolve_conflict(
8990 primary_result = coq_result ,
9091 combined_confidence = 0.90 ,
9192 )
92-
93+
9394 # Fallback to Lean
9495 if self .use_fallback :
9596 lean_result = self ._try_lean_proof (claims )
@@ -100,23 +101,23 @@ def resolve_conflict(
100101 fallback_result = lean_result ,
101102 combined_confidence = 0.85 ,
102103 )
103-
104+
104105 return HybridProofResult (proven = False , prover_used = ProverBackend .HYBRID )
105106
106- def _try_lean_proof (self , claims : List [ Tuple [str , str , str ]]) -> LeanProofResult :
107+ def _try_lean_proof (self , claims : list [ tuple [str , str , str ]]) -> LeanProofResult :
107108 """Attempt proof using Lean/LeanDojo."""
108109 try :
109110 # Translate first claim to Lean
110111 claim_text = claims [0 ][1 ]
111112 claim_type = claims [0 ][2 ]
112-
113+
113114 lean_stmt = self .lean_translator .translate_claim (claim_text , claim_type )
114115 lean_code = self .lean_translator .to_lean_code (lean_stmt )
115-
116+
116117 # Attempt proof
117118 proof_result = self .lean_prover .prove (lean_code , lean_stmt .name )
118119 logger .info (f"Lean proof attempt: { proof_result } " )
119-
120+
120121 return proof_result
121122 except Exception as e :
122123 logger .error (f"Lean proof failed: { e } " )
@@ -127,7 +128,7 @@ def _try_lean_proof(self, claims: List[Tuple[str, str, str]]) -> LeanProofResult
127128 error_message = str (e ),
128129 )
129130
130- def _try_coq_proof (self , claims : List [ Tuple [str , str , str ]]) -> Dict [str , Any ]:
131+ def _try_coq_proof (self , claims : list [ tuple [str , str , str ]]) -> dict [str , Any ]:
131132 """Attempt proof using Coq (existing implementation)."""
132133 try :
133134 agent_id , claim_text , claim_type = claims [0 ]
0 commit comments