catlogic 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -0
  3. data/.rspec +2 -0
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +36 -0
  9. data/Rakefile +7 -0
  10. data/bin2/.idea/.name +1 -0
  11. data/bin2/.idea/bin.iml +9 -0
  12. data/bin2/.idea/encodings.xml +5 -0
  13. data/bin2/.idea/misc.xml +5 -0
  14. data/bin2/.idea/modules.xml +9 -0
  15. data/bin2/.idea/scopes/scope_settings.xml +5 -0
  16. data/bin2/.idea/vcs.xml +7 -0
  17. data/bin2/.idea/workspace.xml +129 -0
  18. data/bin2/displayInferredTruths.rb +43 -0
  19. data/bin2/getAllValidPropositions.rb +24 -0
  20. data/bin2/testCombineSets.rb +27 -0
  21. data/bin2/testIfUnique.rb +14 -0
  22. data/bin2/testPremisePair.rb +10 -0
  23. data/bin2/testProposition.rb +47 -0
  24. data/bin2/testPropositionType.rb +40 -0
  25. data/bin2/testQuantity.rb +12 -0
  26. data/bin2/testReduceToUniqueSet.rb +18 -0
  27. data/bin2/testSyllogism.rb +45 -0
  28. data/bin2/testSyllogismForm.rb +51 -0
  29. data/catlogic.gemspec +25 -0
  30. data/lib/catlogic/distribution.rb +16 -0
  31. data/lib/catlogic/figure.rb +45 -0
  32. data/lib/catlogic/form.rb +22 -0
  33. data/lib/catlogic/mood.rb +14 -0
  34. data/lib/catlogic/premise_collection.rb +211 -0
  35. data/lib/catlogic/premise_pair.rb +61 -0
  36. data/lib/catlogic/proposition.rb +181 -0
  37. data/lib/catlogic/proposition_type.rb +47 -0
  38. data/lib/catlogic/quality.rb +16 -0
  39. data/lib/catlogic/quantity.rb +16 -0
  40. data/lib/catlogic/syllogism.rb +171 -0
  41. data/lib/catlogic/term.rb +32 -0
  42. data/lib/catlogic/version.rb +3 -0
  43. data/lib/catlogic.rb +17 -0
  44. data/spec/distribution_spec.rb +26 -0
  45. data/spec/figure_spec.rb +27 -0
  46. data/spec/form_spec.rb +22 -0
  47. data/spec/mood_spec.rb +17 -0
  48. data/spec/premise_pair_spec.rb +51 -0
  49. data/spec/proposition_spec.rb +215 -0
  50. data/spec/proposition_type_spec.rb +37 -0
  51. data/spec/quality_spec.rb +17 -0
  52. data/spec/quantity_spec.rb +19 -0
  53. data/spec/spec_helper.rb +89 -0
  54. data/spec/syllogism_spec.rb +121 -0
  55. data/spec/term_spec.rb +35 -0
  56. metadata +166 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 57afcbee35246b90edd31886a66d0d2cf921886b
4
+ data.tar.gz: d800074866220096293953f434c5b102a07f0bcd
5
+ SHA512:
6
+ metadata.gz: 7205ea09f5d5337b984364a89df4321bbbe00589ab7086812156491461d7ec46fa07c16152476de084f724e807dba2ab185d7b82975c7dfccec5d7324ef44c08
7
+ data.tar.gz: bb1b1ef80850971219ec479b711649161d078208b9f7e19bc5fa75fb3a12a9950d298ea44dbed723d9519af0ff61e86416048504c16ee92fd8af799fcd6eb54e
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ catlogic
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.2.0
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in catlogic.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 Jeffrey C. Witt
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,36 @@
1
+ # Catlogic
2
+
3
+ ## Installation
4
+
5
+ gem install catlogic
6
+
7
+ ## Usage
8
+
9
+ require 'catlogic'
10
+
11
+ # create a categorical proposition
12
+ proposition = Proposition.new(Quantity.new("Universal"), Term.new("Dogs), Quality.new("Affirmative"), Term.new("Mortal"), true)
13
+
14
+ # get the type of the proposition
15
+ proposition.type
16
+
17
+ #get a human readable form of the proposition
18
+ propostion.label
19
+
20
+ #make immediate inferences
21
+ #obverse
22
+ proposition.obverse
23
+
24
+ # Build a proposition from its type
25
+ proposition = PropositionType.new("I").proposition
26
+
27
+ # Build a syllogism
28
+ syllogism = Syllogism.new(majorproposition, minorproposition, conclusion)
29
+
30
+ # Test the validity of a syllogism
31
+ syllogism.validity
32
+
33
+ # Get form of syllogism
34
+ syllogism.form
35
+
36
+
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new
5
+
6
+ task :default => :spec
7
+ task :test => :spec
data/bin2/.idea/.name ADDED
@@ -0,0 +1 @@
1
+ bin
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="RUBY_MODULE" version="4">
3
+ <component name="NewModuleRootManager">
4
+ <content url="file://$MODULE_DIR$" />
5
+ <orderEntry type="inheritedJdk" />
6
+ <orderEntry type="sourceFolder" forTests="false" />
7
+ </component>
8
+ </module>
9
+
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
4
+ </project>
5
+
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectRootManager" version="2" project-jdk-name="RVM: ruby-1.9.3-p194" project-jdk-type="RUBY_SDK" />
4
+ </project>
5
+
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/bin.iml" filepath="$PROJECT_DIR$/.idea/bin.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
9
+
@@ -0,0 +1,5 @@
1
+ <component name="DependencyValidationManager">
2
+ <state>
3
+ <option name="SKIP_IMPORT_STATEMENTS" value="false" />
4
+ </state>
5
+ </component>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="" vcs="" />
5
+ </component>
6
+ </project>
7
+
@@ -0,0 +1,129 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ChangeListManager">
4
+ <list default="true" id="d767b6e2-95a4-49ff-be35-d0ed463e2819" name="Default" comment="" />
5
+ <ignored path="bin.iws" />
6
+ <ignored path=".idea/workspace.xml" />
7
+ <option name="TRACKING_ENABLED" value="true" />
8
+ <option name="SHOW_DIALOG" value="false" />
9
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
10
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
11
+ <option name="LAST_RESOLUTION" value="IGNORE" />
12
+ </component>
13
+ <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
14
+ <component name="CreatePatchCommitExecutor">
15
+ <option name="PATCH_PATH" value="" />
16
+ </component>
17
+ <component name="DaemonCodeAnalyzer">
18
+ <disable_hints />
19
+ </component>
20
+ <component name="FavoritesManager">
21
+ <favorites_list name="bin" />
22
+ </component>
23
+ <component name="ProjectFrameBounds">
24
+ <option name="y" value="22" />
25
+ <option name="width" value="1280" />
26
+ <option name="height" value="723" />
27
+ </component>
28
+ <component name="ProjectLevelVcsManager" settingsEditedManually="false">
29
+ <OptionsSetting value="true" id="Add" />
30
+ <OptionsSetting value="true" id="Remove" />
31
+ <OptionsSetting value="true" id="Checkout" />
32
+ <OptionsSetting value="true" id="Update" />
33
+ <OptionsSetting value="true" id="Status" />
34
+ <OptionsSetting value="true" id="Edit" />
35
+ <ConfirmationsSetting value="0" id="Add" />
36
+ <ConfirmationsSetting value="0" id="Remove" />
37
+ </component>
38
+ <component name="ProjectReloadState">
39
+ <option name="STATE" value="0" />
40
+ </component>
41
+ <component name="ProjectView">
42
+ <navigator currentView="ProjectPane" proportions="" version="1">
43
+ <flattenPackages />
44
+ <showMembers />
45
+ <showModules />
46
+ <showLibraryContents />
47
+ <hideEmptyPackages />
48
+ <abbreviatePackageNames />
49
+ <autoscrollToSource />
50
+ <autoscrollFromSource />
51
+ <sortByType />
52
+ </navigator>
53
+ <panes>
54
+ <pane id="Scope" />
55
+ <pane id="ProjectPane">
56
+ <subPane>
57
+ <PATH>
58
+ <PATH_ELEMENT>
59
+ <option name="myItemId" value="bin" />
60
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
61
+ </PATH_ELEMENT>
62
+ </PATH>
63
+ </subPane>
64
+ </pane>
65
+ </panes>
66
+ </component>
67
+ <component name="PropertiesComponent">
68
+ <property name="WebServerToolWindowFactoryState" value="false" />
69
+ </component>
70
+ <component name="RunManager">
71
+ <list size="0" />
72
+ </component>
73
+ <component name="ShelveChangesManager" show_recycled="false" />
74
+ <component name="SvnConfiguration">
75
+ <configuration />
76
+ </component>
77
+ <component name="TaskManager">
78
+ <task active="true" id="Default" summary="Default task">
79
+ <changelist id="d767b6e2-95a4-49ff-be35-d0ed463e2819" name="Default" comment="" />
80
+ <created>1411577433444</created>
81
+ <updated>1411577433444</updated>
82
+ </task>
83
+ <servers />
84
+ </component>
85
+ <component name="ToolWindowManager">
86
+ <frame x="0" y="22" width="1280" height="723" extended-state="6" />
87
+ <editor active="true" />
88
+ <layout>
89
+ <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
90
+ <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
91
+ <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
92
+ <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
93
+ <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
94
+ <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24959612" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
95
+ <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
96
+ <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
97
+ <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
98
+ <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
99
+ <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
100
+ <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
101
+ <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
102
+ <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
103
+ <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
104
+ <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
105
+ <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
106
+ <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
107
+ </layout>
108
+ </component>
109
+ <component name="Vcs.Log.UiProperties">
110
+ <option name="RECENTLY_FILTERED_USER_GROUPS">
111
+ <collection />
112
+ </option>
113
+ <option name="RECENTLY_FILTERED_BRANCH_GROUPS">
114
+ <collection />
115
+ </option>
116
+ </component>
117
+ <component name="VcsContentAnnotationSettings">
118
+ <option name="myLimit" value="2678400000" />
119
+ </component>
120
+ <component name="VcsManagerConfiguration">
121
+ <option name="myTodoPanelSettings">
122
+ <TodoPanelSettings />
123
+ </option>
124
+ </component>
125
+ <component name="XDebuggerManager">
126
+ <breakpoint-manager />
127
+ </component>
128
+ </project>
129
+
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative "../lib/catlog.rb"
4
+
5
+ premises2 = [Proposition.new("universal", "Mammals", "affirmative", "Mortal Things", true),
6
+ Proposition.new("universal", "People", "affirmative", "Mammals", true)]
7
+
8
+ premises3 = [Proposition.new("universal", "Mammals", "affirmative", "Mortal Things", true),
9
+ Proposition.new("universal", "People", "affirmative", "Mammals", true),
10
+ Proposition.new("universal", "Ants", "negative", "Mammals", true)]
11
+
12
+
13
+ premises4 = [Proposition.new("universal", "planes", "affirmative", "things with wings", true),
14
+ Proposition.new("particular", "planes", "affirmative", "things with propellors", true),
15
+ Proposition.new("universal", "pilots", "affirmative", "things that fly planes", true),
16
+ Proposition.new("universal", "things that fly planes", "affirmative", "tall things", true)]
17
+
18
+ premises5 = [Proposition.new("universal", "dogs", "affirmative", "animals", true),
19
+ Proposition.new("universal", "cats", "affirmative", "animals", true),
20
+ Proposition.new("universal", "animals", "affirmative", "mortals", true),
21
+ Proposition.new("universal", "mortals", "affirmative", "things that disintegrate", true),
22
+ Proposition.new("particular", "dogs", "affirmative", "brown", true)]
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+ collection = PremiseCollection.new(premises4)
31
+
32
+
33
+ puts "==============="
34
+ puts "intial set"
35
+ puts premises4.count
36
+ puts
37
+ premises4.each do |proposition|
38
+ proposition.displayProposition
39
+ end
40
+ puts "==============="
41
+
42
+ collection.displayLoopedInferredTruths
43
+ #puts "#{collection.getNumberOfInferredTruths} / #{collection.getNumberOfInputTruths}: #{collection.getRatioInputToInferred}/1"
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative "../lib/catlog.rb"
4
+
5
+ typeArray = ["A", "E", "I", "O"]
6
+ numberArray = [1,2,3,4]
7
+ i=0
8
+ c=0
9
+ numberArray.each do |i|
10
+ puts "\n"
11
+ typeArray.each do |type|
12
+
13
+ typeArray.each do |secondtype|
14
+ typeArray.each do |thirdtype|
15
+ mood = Mood.new(PropositionType.new(type), PropositionType.new(secondtype), PropositionType.new(thirdtype))
16
+ form = Form.new(mood, Figure.new(i))
17
+
18
+ if form.validity == true
19
+ puts form.label
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative "../lib/catlog.rb"
4
+
5
+ premises1 = [Proposition.new("universal", "dogs", "affirmative", "animals", true),
6
+ Proposition.new("universal", "cats", "affirmative", "animals", true),
7
+ Proposition.new("universal", "animals", "affirmative", "mortals", true),
8
+ Proposition.new("universal", "mortals", "affirmative", "things that disintegrate", true),
9
+ Proposition.new("particular", "dogs", "affirmative", "brown", true),
10
+ Proposition.new("particular", "cats", "negative", "mean things", true),
11
+ Proposition.new("particular", "cats", "negative", "mean things", true),
12
+ Proposition.new("universal", "animals", "negative", "divine things", true),
13
+ Proposition.new("particular", "animals", "affirmative", "carnivores", true)]
14
+
15
+
16
+ premises2 = [Proposition.new("universal", "Events", "affirmative", "Caused Happenings", true),
17
+ Proposition.new("universal", "Free Decisions", "negative", "Caused Happenings", true),
18
+ Proposition.new("universal", "Caused Happenings", "affirmative", "Physical", true)]
19
+
20
+ collection = PremiseCollection.new(premises1)
21
+
22
+ newcollection = collection.combineSets(premises2)
23
+
24
+
25
+ newcollection.each do |proposition|
26
+ proposition.displayProposition
27
+ end
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative "../lib/catlogic.rb"
4
+
5
+ premisesArray = [Proposition.new(Quantity.new("universal"), Term.new("Events"), Quality.new("affirmative"), Term.new("Caused Happenings"), true),
6
+ Proposition.new(Quantity.new("universal"), Term.new("Free Decisions"), Quality.new("negative"), Term.new("Caused Happenings"), true),
7
+ Proposition.new(Quantity.new("universal"), Term.new("Fun"), Quality.new("affirmative"), Term.new("Events"), true)]
8
+
9
+
10
+
11
+
12
+ proposition = Proposition.new(Quantity.new("universal"), Term.new("Free Decisions"), Quality.new("negative"), Term.new("Caused Happenings"), true)
13
+
14
+ puts proposition.number_of_occurences(premisesArray)
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative "../lib/catlog.rb"
4
+
5
+ premise1 = Proposition.new("universal", "Mammals", "affirmative", "Dogs", true)
6
+ premise2 = Proposition.new("universal", "Mammals", "affirmative", "Mortal Things", true)
7
+
8
+
9
+ pair = PremisePair.new(premise1, premise2)
10
+ puts pair.isThreeTermPair?;
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ #require_relative "../lib/catlogic"
4
+ begin
5
+ require 'catlogic'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'catlogic'
9
+ end
10
+
11
+ proposition = Proposition.new(Quantity.new("particular"), Term.new("Free Decisions"), Quality.new("negative"), Term.new("Caused Happenings"), false)
12
+
13
+ #converse = proposition.getContrapolated
14
+ #converse.displayProposition
15
+ #puts converse.getTruthValue
16
+
17
+ puts "======Proposition========="
18
+ puts proposition.label
19
+ puts "======Proposition Type========="
20
+ puts "type: #{proposition.type.label}"
21
+ puts "======Assumed Truth Value========="
22
+ puts "assumed: #{proposition.truthvalue}"
23
+ puts "=====Immediate Inferences========="
24
+ contradictory = proposition.contradictory
25
+ if proposition.quantity.label == "universal"
26
+ contrary_subcontrary = proposition.contrary
27
+ elsif proposition.quantity.label == "particular"
28
+ contrary_subcontrary = proposition.subcontrary
29
+ end
30
+ subaltern = proposition.subaltern
31
+ converse = proposition.converse
32
+ obverse = proposition.obverse
33
+ contrapolated = proposition.contrapolated
34
+
35
+ puts "====contradictory: #{contradictory.type.label}: #{contradictory.truthvalue}==="
36
+ puts contradictory.label
37
+ puts "====contrary/subcontrary: #{contrary_subcontrary.type.label}: #{contrary_subcontrary.truthvalue}===="
38
+ puts contrary_subcontrary.label
39
+ puts "====subaltern: #{subaltern.type.label}: #{subaltern.truthvalue}===="
40
+ puts subaltern.label
41
+ puts "====converse: #{converse.type.label}: #{converse.truthvalue}===="
42
+ puts converse.label
43
+ puts "====obverse: #{obverse.type.label}: #{obverse.truthvalue}===="
44
+ puts obverse.label
45
+ puts "====contrapolated = #{contrapolated.type.label}: #{contrapolated.truthvalue}===="
46
+ puts contrapolated.label
47
+
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative "../lib/catlogic"
4
+
5
+ type = PropositionType.new("O", true)
6
+ proposition = type.proposition
7
+
8
+ ## this is repeated from testProposition.rb
9
+
10
+ puts "======Proposition========="
11
+ puts proposition.label
12
+ puts "======Proposition Type========="
13
+ puts "type: #{proposition.type.label}"
14
+ puts "======Assumed Truth Value========="
15
+ puts "assumed: #{proposition.truthvalue}"
16
+
17
+ puts "=====Immediate Inferences========="
18
+ contradictory = proposition.contradictory
19
+ if proposition.quantity.label == "universal"
20
+ contrary_subcontrary = proposition.contrary
21
+ elsif proposition.quantity.label == "particular"
22
+ contrary_subcontrary = proposition.subcontrary
23
+ end
24
+ subaltern = proposition.subaltern
25
+ converse = proposition.converse
26
+ obverse = proposition.obverse
27
+ contrapolated = proposition.contrapolated
28
+
29
+ puts "====contradictory: #{contradictory.type.label}: #{contradictory.truthvalue}==="
30
+ puts contradictory.label
31
+ puts "====contrary/subcontrary: #{contrary_subcontrary.type.label}: #{contrary_subcontrary.truthvalue}===="
32
+ puts contrary_subcontrary.label
33
+ puts "====subaltern: #{subaltern.type.label}: #{subaltern.truthvalue}===="
34
+ puts subaltern.label
35
+ puts "====converse: #{converse.type.label}: #{converse.truthvalue}===="
36
+ puts converse.label
37
+ puts "====obverse: #{obverse.type.label}: #{obverse.truthvalue}===="
38
+ puts obverse.label
39
+ puts "====contrapolated = #{contrapolated.type.label}: #{contrapolated.truthvalue}===="
40
+ puts contrapolated.label
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'catlogic'
5
+ rescue LoadError
6
+ require 'rubygems'
7
+ require 'catlogic'
8
+ end
9
+
10
+ quantity = Quantity.new("universal")
11
+
12
+ puts quantity.label
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative "../lib/catlog.rb"
4
+
5
+ premisesArray = [Proposition.new("universal", "Events", "affirmative", "Caused Happenings", true),
6
+ Proposition.new("universal", "Free Decisions", "negative", "Caused Happenings", true),
7
+ Proposition.new("universal", "Fun", "affirmative", "Events", true),
8
+ Proposition.new("universal", "Fun", "affirmative", "Events", true),
9
+ Proposition.new("universal", "Fun", "affirmative", "Events", true)]
10
+
11
+
12
+ collection = PremiseCollection.new(premisesArray)
13
+
14
+ reducedcollection = collection.reduceToUniqueSet
15
+
16
+ reducedcollection.each do |proposition|
17
+ proposition.displayProposition
18
+ end
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative "../lib/catlogic"
4
+
5
+ major = Proposition.new(Quantity.new("universal"), Term.new("pollution free"), Quality.new("negative"), Term.new("completely efficient"), true)
6
+ minor = Proposition.new(Quantity.new("universal"), Term.new("automobile"), Quality.new("negative"), Term.new("completely efficient"), true)
7
+ conclusion = Proposition.new(Quantity.new("universal"), Term.new("automobile"), Quality.new("negative"), Term.new("pollution free"), true)
8
+ syllogism = Syllogism.new(major, minor, conclusion)
9
+
10
+ puts "=========="
11
+ puts "Testing syllogism (#{syllogism.form.label}):"
12
+ puts "====Syllogism======"
13
+ puts syllogism.label
14
+ puts "====Propositional Form===="
15
+ puts Form.new(syllogism.mood, syllogism.figure).syllogism.label
16
+ puts "=====Validity===="
17
+ puts "Validity: #{syllogism.validity}"
18
+ puts "=========="
19
+
20
+ if (!syllogism.validity)
21
+ if (!syllogism.undistributed_middle_test)
22
+ puts "undistributed_middle_test failed"
23
+ puts "=========="
24
+ end
25
+ if (!syllogism.illicit_major_test)
26
+ puts "illicit_major_test failed"
27
+ puts "=========="
28
+ end
29
+ if (!syllogism.illicit_minor_test)
30
+ puts "illicit_minor_test failed"
31
+ puts "=========="
32
+ end
33
+ if (!syllogism.exclusive_premises_test)
34
+ puts "exclusive_premises_test failed"
35
+ puts "=========="
36
+ end
37
+ if (!syllogism.affirm_from_neg_test)
38
+ puts "affirm_from_neg_test failed"
39
+ puts "=========="
40
+ end
41
+ if (!syllogism.neg_from_affirms_test)
42
+ puts "neg_from_affirms_test"
43
+ puts "=========="
44
+ end
45
+ end
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative "../lib/catlogic"
4
+
5
+ mood = Mood.new(PropositionType.new("A"), PropositionType.new("A"), PropositionType.new("A"))
6
+ figure = Figure.new(3)
7
+ form = Form.new(mood, figure)
8
+ puts "====================="
9
+ puts "Testing: #{form.label}"
10
+
11
+ syllogism = form.syllogism
12
+
13
+ puts "=====Propositional form====="
14
+ puts form.syllogism.label
15
+
16
+ ### This is redundant in testSyllogism ##
17
+ puts "=====Validity===="
18
+ puts "Validity: #{syllogism.validity}"
19
+
20
+
21
+ if (!syllogism.validity)
22
+ if (!syllogism.undistributed_middle_test)
23
+ puts "undistributed_middle_test failed"
24
+ puts "=========="
25
+ end
26
+ if (!syllogism.illicit_major_test)
27
+ puts "illicit_major_test failed"
28
+ puts "=========="
29
+ end
30
+ if (!syllogism.illicit_minor_test)
31
+ puts "illicit_minor_test failed"
32
+ puts "=========="
33
+ end
34
+ if (!syllogism.exclusive_premises_test)
35
+ puts "exclusive_premises_test failed"
36
+ puts "=========="
37
+ end
38
+ if (!syllogism.affirm_from_neg_test)
39
+ puts "affirm_from_neg_test failed"
40
+ puts "=========="
41
+ end
42
+ if (!syllogism.neg_from_affirms_test)
43
+ puts "neg_from_affirms_test"
44
+ puts "=========="
45
+ end
46
+ end
47
+
48
+
49
+
50
+
51
+