proof_attempt.rb revision 83ff5d30b9f0e2da446e789b8c38733a3a563ccf
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainenclass ProofAttempt < ActiveRecord::Base
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen include Numbering
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen include StateUpdater
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen numbering_parent_column 'sentence_id'
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen
1ed1ad066e4aa313e33dafedb892fb84946cacebTimo Sirainen belongs_to :theorem, foreign_key: 'sentence_id'
146240408e677e99e579d1feed92689585cc25d4Timo Sirainen belongs_to :proof_status
b1dd6be436e887774b94965ebe9af6d04179c227Timo Sirainen belongs_to :prover
9844b5359f5cab77e4c31a7ac9e4a60a0073929eTimo Sirainen belongs_to :proof_attempt_configuration
4073f0dbf3277f981a8fcee3b89ea15aaf380a7fTimo Sirainen has_many :generated_axioms, dependent: :destroy
b200bc3875fa06d42c8619865cc306c3297fcaccAki Tuomi has_and_belongs_to_many :used_axioms,
b200bc3875fa06d42c8619865cc306c3297fcaccAki Tuomi class_name: 'Axiom',
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen association_foreign_key: 'sentence_id',
b200bc3875fa06d42c8619865cc306c3297fcaccAki Tuomi join_table: 'used_axioms_proof_attempts'
b200bc3875fa06d42c8619865cc306c3297fcaccAki Tuomi has_and_belongs_to_many :used_theorems,
0aac625db5e6e179c8ee7420a12ab300d6b178edTimo Sirainen class_name: 'Theorem',
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen association_foreign_key: 'sentence_id',
e5224c0589916fb22f95f959326cf4b6221715b0Timo Sirainen join_table: 'used_axioms_proof_attempts'
ca44a6ba994aaa3231a20ef6e046dfd97a8dcd2dTimo Sirainen
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen attr_accessible :locid
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen attr_accessible :prover_output,
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen :tactic_script,
ca44a6ba994aaa3231a20ef6e046dfd97a8dcd2dTimo Sirainen :time_taken,
419cf63077e755935ce105747d6ebc67b7d38a7fTimo Sirainen :number,
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen :state,
b200bc3875fa06d42c8619865cc306c3297fcaccAki Tuomi :state_updated_at,
ca44a6ba994aaa3231a20ef6e046dfd97a8dcd2dTimo Sirainen :last_error
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen validates :state, inclusion: {in: State::STATES}
1ed1ad066e4aa313e33dafedb892fb84946cacebTimo Sirainen validates :theorem, presence: true
1ed1ad066e4aa313e33dafedb892fb84946cacebTimo Sirainen
146240408e677e99e579d1feed92689585cc25d4Timo Sirainen before_create :generate_locid
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen before_save :set_default_proof_status
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen after_save :update_theorem_status
f8ead0942a9b7c8fcf91414ed1b534d5807ca555Timo Sirainen
1ed1ad066e4aa313e33dafedb892fb84946cacebTimo Sirainen scope :latest, order('number DESC')
1ed1ad066e4aa313e33dafedb892fb84946cacebTimo Sirainen
cbe49ba128638e63395aedaa2144087c89835633Timo Sirainen delegate :ontology, to: :theorem
cbe49ba128638e63395aedaa2144087c89835633Timo Sirainen
def self.find_with_locid(locid, _iri = nil)
where(locid: locid).first
end
def used_sentences
@used_sentences ||= used_axioms + used_theorems
end
def set_default_proof_status
self.proof_status ||= ProofStatus.find(ProofStatus::DEFAULT_OPEN_STATUS)
end
def generate_locid
self.locid = "#{theorem.locid}//ProofAttempt-#{number}"
end
def update_theorem_status
theorem.update_proof_status(proof_status)
end
def associate_prover_with_ontology_version
ontology_version = theorem.ontology.current_version
unless ontology_version.provers.include?(prover)
ontology_version.provers << prover
ontology_version.save!
end
end
end