theorem.rb revision 9bcd2b68914ea7b2fe7e356ad64cdaca04561e98
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenclass Theorem < Sentence
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen include StateUpdater
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen DEFAULT_STATUS = ProofStatus::DEFAULT_OPEN_STATUS
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
72cbf33ae81fde08384d30c779ff540752d9256cTimo Sirainen has_many :proof_attempts, foreign_key: 'sentence_id', dependent: :destroy
72cbf33ae81fde08384d30c779ff540752d9256cTimo Sirainen belongs_to :proof_status
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
72cbf33ae81fde08384d30c779ff540752d9256cTimo Sirainen attr_accessible :state, :state_updated_at, :last_error, :provable
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
fd2f5fbc1f07aa93e2214a28cdf02437fb7d06c8Timo Sirainen validates :state, inclusion: {in: State::STATES}
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen before_validation :set_default_state
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen before_save :set_default_proof_status
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen def set_default_state
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen self.state ||= 'pending'
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen end
72cbf33ae81fde08384d30c779ff540752d9256cTimo Sirainen
72cbf33ae81fde08384d30c779ff540752d9256cTimo Sirainen def set_default_proof_status
72cbf33ae81fde08384d30c779ff540752d9256cTimo Sirainen self.proof_status = ProofStatus.find(DEFAULT_STATUS) unless proof_status
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen end
72cbf33ae81fde08384d30c779ff540752d9256cTimo Sirainen
72cbf33ae81fde08384d30c779ff540752d9256cTimo Sirainen def update_proof_status(proof_status)
72cbf33ae81fde08384d30c779ff540752d9256cTimo Sirainen if proof_status.solved? || !self.proof_status.solved?
72cbf33ae81fde08384d30c779ff540752d9256cTimo Sirainen self.proof_status = proof_status
72cbf33ae81fde08384d30c779ff540752d9256cTimo Sirainen save!
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen end
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen end
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen def prove_options
72cbf33ae81fde08384d30c779ff540752d9256cTimo Sirainen hets_options = ontology.hets_options
72cbf33ae81fde08384d30c779ff540752d9256cTimo Sirainen Hets::ProveOptions.new(**hets_options.options,
72cbf33ae81fde08384d30c779ff540752d9256cTimo Sirainen ontology: ontology, theorems: [self])
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen end
72cbf33ae81fde08384d30c779ff540752d9256cTimo Sirainenend
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen