<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Computational Thinking with Logic Programming</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Gopal</forename><surname>Gupta</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">The University of Texas at Dallas</orgName>
								<address>
									<settlement>Richardson</settlement>
									<region>TX</region>
									<country key="US">USA</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Elmer</forename><surname>Salazar</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">The University of Texas at Dallas</orgName>
								<address>
									<settlement>Richardson</settlement>
									<region>TX</region>
									<country key="US">USA</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Joaquín</forename><surname>Arias</surname></persName>
							<affiliation key="aff1">
								<orgName type="department">CETINIA</orgName>
								<orgName type="institution">Universidad Rey Juan Carlos</orgName>
								<address>
									<settlement>Madrid</settlement>
									<country key="ES">Spain</country>
								</address>
							</affiliation>
						</author>
						<author>
							<affiliation key="aff2">
								<orgName type="department">𝑛𝑑 Workshop on Prolog Education</orgName>
								<address>
									<postCode>2024</postCode>
									<settlement>October, Dallas</settlement>
									<country key="US">USA</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Computational Thinking with Logic Programming</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">7DDC597391DD66D71389B0D68A68745B</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2025-04-23T19:51+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Computational Thinking</term>
					<term>Logic Programming</term>
					<term>Answer Set Programming</term>
					<term>s(CASP)</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Computational thinking is a problem-solving approach that involves breaking down complex problems into smaller, manageable parts, recognizing patterns, abstracting general principles, and devising algorithms to solve them. It can be thought of as an algorithmic method of thinking. Our thesis is that to learn to think computationally, one must first learn to think logically. In this work-in-progress paper we explore how logic programming, answer set programming (ASP) in particular, can aid in learning to think logically. We discuss how ASP can be used to help students organize their thoughts as well as make them understand various processes involved in human thinking. We believe that this will facilitate the teaching of computational thinking to students.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Introduction</head><p>Computational thinking involves "solving problems, designing systems, and understanding human behavior, by drawing on the concepts fundamental to computer science. Computational thinking includes a range of mental tools that reflect the breadth of the field of computer science" <ref type="bibr" target="#b0">[1]</ref>. Computational thinking has been proposed as a crucial skill for everyone to learn because it helps individuals develop a structured and logical approach to solving complex problems. A pre-requisite, thus, to computational thinking is to learn to think logically. In this paper we show how logic programming, specifically answer set programming (ASP) and its realization in the goal-directed predicate ASP system called s(CASP), can be employed as an aid for developing logical thinking in students. Note that modeling human thinking using logic programming has been an object of intense study for a long time <ref type="bibr" target="#b1">[2,</ref><ref type="bibr" target="#b2">3]</ref>. Here, our objective is to show how logic programming can be used to teach logical thinking to students which, in turn, can lead to students learning computational thinking <ref type="bibr" target="#b0">[1]</ref>. Logical thinking includes being able to precisely express knowledge that is involved in human thought as well as processing this knowledge to draw inferences, infer new knowledge, fill gaps in knowledge, etc.</p><p>Humans are capable of thought, of course. However, human thought process appears quite informal, and most people are not able to understand the steps they took, for example, to arrive at a conclusion. We argue that human thought relies on a small number of inference principles, and once a human understands these principles and how they are invoked, he/she can understand their thought processes involved in drawing conclusions, deriving new knowledge, and filling gaps in knowledge. This, in turn, can facilitate computational thinking, as humans can then understand the mapping between the steps of a task to be accomplished and their thought process. A pre-requisite to computational thinking is logical thinking. We show how logic programming can be used as a tool to formalize thought processes that appear informal otherwise. Once a person develops the ability to see the formalism underlying their thoughts, they will become better reasoners and hence better computational thinkers.</p><p>Formalizing the human thought process has been considered hard. The study of human thought process has been conducted over several millennia <ref type="bibr" target="#b3">[4,</ref><ref type="bibr" target="#b4">5]</ref>. In modern times this effort culminated in boolean logic <ref type="bibr" target="#b5">[6]</ref>, first order logic <ref type="bibr" target="#b6">[7]</ref>, and various other advanced logics. These logics, however, are limited and could not match the sophistication of human reasoning in the sense that it is hard to use these logics to faithfully model the human thought process in an elegant manner.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Computational Thinking</head><p>Computational thinking involves representing solutions to problems as computation steps (algorithm). The key points of computational thinking include:</p><p>• Decomposition: Breaking down complex problems into smaller, more manageable parts.</p><p>• Pattern Recognition: Identifying similarities, trends, or patterns in data or problems that can be reused in other situations. • Abstraction: Simplifying a problem by focusing on the essential details and ignoring irrelevant information. • Algorithm Design: Creating step-by-step instructions or rules (algorithms) to solve problems systematically and efficiently. • Debugging: Identifying and fixing errors or flaws in an algorithm or solution.</p><p>• Generalization: Applying a solution to a broad set of similar problems.</p><p>Computational thinking can also be thought of as scientific thinking, design thinking, or model-based thinking. These have been discussed widely in the literature over decades <ref type="bibr" target="#b7">[8]</ref>. Computational thinking, essentially, is algorithmic thinking. With this in mind, recall Kowalski's famous equation <ref type="bibr" target="#b1">[2]</ref>: Algorithm = Logic + Control In the context of human thinking, 'logic' here stands for knowledge, and 'control' for methods for processing knowledge and reasoning over it. So to master algorithmic thinking, one must not only understand representation of (human) logic or knowledge, but also the operational procedures involved in processing knowledge and reasoning over it. Thus, to master algorithmic thinking, humans must become adept at both: knowledge representation and reasoning.</p><p>Knowledge (logic) that resides in the human mind can be represented as facts, rules, and goals. Control is represented by human mental processes that process knowledge. These mental processes correspond to operations such as deduction, abduction, induction, etc., realized through backward chaining, forward chaining, resolution, etc.</p><p>Significant number of articles and books have been written on modeling human knowledge in logic, and on performing reasoning. What we show in this paper is how this reasoning can be presented in a formal way, and how the proofs needed to establish a conclusion can be systematically generated. These proofs can help students understand the complex reasoning processes followed by humans.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Modeling Human Thinking</head><p>The representation of logic in the human mind (human logic) is quite different from what is espoused by classical logic. Human logic is non-monotonic, as it can draw inferences even if the knowledge is incomplete. Incomplete knowledge is elegantly modeled by negation-as-failure and the stable model semantics of logic programming <ref type="bibr" target="#b8">[9]</ref>. Thus, to model human logic we will employ answer set programming (ASP). Seeing explicitly represented human thought in the form of an answer set program will lead to students being able to express their knowledge more precisely. Human control or reasoning, on the other hand, will by represented by the operational semantics of ASP. We will use the s(CASP) goal-directed predicate answer set programming system <ref type="bibr" target="#b9">[10]</ref> for this purpose. The s(CASP) system is a query-driven ASP engine that executes an answer set program in a top-down, query-driven manner, very much how a human might think and reason <ref type="bibr" target="#b10">[11]</ref>. The s(CASP) system supports predicates with arbitrary terms and it also supports constructive negation.</p><p>Human reasoning methods use techniques such as deduction, abduction, and induction to draw inference <ref type="bibr" target="#b11">[12]</ref>. Humans also employ reasoning methods to simplify (human) knowledge by combining rules and facts to produce new information and infer missing knowledge.</p><p>Note that aside from negation-as-failure, ASP also includes strong negation. Negation-as-failure, represented as not p evaluates to true if p is false or unknown. It evaluates to false if p is true. Strong negation, denoted -p, evaluates to false if p is known to be true or unknown. It evaluates to true, if falsehood of p can be explicitly established.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.">Modeling Human Logic</head><p>Answer Set Programming (ASP) has been shown to be well-suited for knowledge representation and reasoning <ref type="bibr" target="#b12">[13,</ref><ref type="bibr" target="#b13">14]</ref>. ASP can model human thinking quite closely as it supports default rules with exceptions and preferences, integrity constraints, and even loop over negation <ref type="bibr" target="#b14">[15]</ref>. ASP can be used to program various shades of truth as well as judgement calls through a combination of negation as failure and strong negation <ref type="bibr" target="#b11">[12]</ref>. For example, given a proposition p (e.g., p ≡ "it is raining now"):</p><p>1. p: denotes that p is unconditionally true. 2. not -p: denotes that p maybe true. 3. not p ∧ not -p: denotes that p is unknown, i.e., there is no evidence of either p or -p. <ref type="bibr" target="#b3">4</ref>. not p: denotes that p may be false (no evidence that p is true). 5. -p: denotes that p is unconditionally false. These shades of truth allow us to model judgement calls that humans make. Consider a physician who is about to prescribe a medicine to a patient. A physician who is willing to take risks may make the judgement call to immediately prescribe the medicine and not worry about the medicine's side effects. ... <ref type="bibr" target="#b1">(2)</ref> which states that medicine M can be prescribed to patient P for disease D if medicine M cures disease D and M's contraindication for P maybe false. M is contraindicated for P, if M has side-effects on P. In contrast, a physician who is conservative may make the judgement call to first seek evidence that M is not contraindicated for patient P. What has changed is the contraindication definition. Medicine M is now contraindicated for patient P if M having a side-effect on P maybe true. The net effect is that now M will be prescribed for patient P for disease D if we can prove that M has no side effects on P. Slight rewriting of ( <ref type="formula">3</ref>) and ( <ref type="formula">4</ref>) results in the rule below, which makes this logic explicit. Next, we theorize that a bulk of human knowledge can be simulated with three types of ASP rules: default rules with exceptions and preferences (defeasible rules), integrity constraints, and assumption-based (or abductive) reasoning <ref type="bibr" target="#b11">[12,</ref><ref type="bibr" target="#b14">15]</ref>. These three types of rules cover all of ASP, a Turing-complete language, so one can arguably draw the conclusion that human knowledge can be modeled with just these three constructs.</p><p>Default Rules: Given a goal, we establish it by decomposing it into subgoals, and then recursively proving those subgoals next, and so on. The dependence of goals on subgoals is described by logic programming rules. For example: 1 flies(X) :-bird(X), alive(X).</p><p>However, there might be conditions that might prevent us from reducing a goal into subgoals. These conditions represent exceptions. Thus, the above rule may be refined into: 1 flies(X) :-bird(X), alive(X), not exception(X). where if X is a penguin it will prevent flies(X) from succeeding. There might be multiple rules that may be used to reduce a goal. We can add additional subgoals to the rules that will allow us to discriminate among these rules thereby prioritizing them <ref type="bibr" target="#b14">[15]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Assumption-based Reasoning:</head><p>While reducing a goal 𝑔, if no information is available for it, i.e., no rule is defined for 𝑔, we can perform abductive or assumption-based reasoning. That is, we now consider two alternate worlds, one in which 𝑔 is true and another one in which 𝑔 is false. This is achieved by adding the following rules (termed even loop over negation in ASP literature <ref type="bibr" target="#b13">[14]</ref>.  In the s(CASP) system, the above effect is achieved by simply declaring g as an abducible via the directive:</p><formula xml:id="formula_0">1 #abducible g/0.</formula><p>An abducible can be an arbitrary predicate as well. The directive automatically generates the even loop described above.</p><p>Integrity Constraints: As we accumulate subgoals in the reduction process, we may encounter subgoals that are mutually inconsistent. These subgoals may be far apart in the proof process, and their inconsistency cannot be modeled using the exception mechanism described previously. In such a case, we impose these restrictions via integrity constraints. For example, a dead person cannot breathe: 1 false :-person(X), dead(X), breathe(X).</p><p>Note that integrity constraints are a special case of odd loops over negation <ref type="bibr" target="#b13">[14,</ref><ref type="bibr" target="#b14">15]</ref>. Also, these integrity constraints may be global or local. Above constraint is an example of a global constraint. A local constraint will be imposed on specific predicates, and thus will be included in the body of the rule specifying that predicate.</p><p>Logically organized thoughts should be expressible as answer set programs. Consider the following example <ref type="bibr" target="#b12">[13]</ref>. A student is admitted to a program if he/she has a high GPA, or has a special talent but a reasonable GPA. A student is declined admission if he/she has low GPA or has no other talent. If it cannot be determined that a student must be admitted or rejected, the student will be interviewed. Note that -admit represents rejection. 1 admit(X) :-highGPA(X), not ab_eligible(X).</p><p>2 admit(X) :-special(X), fairGPA(X), not ab_eligible(X).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>3</head><p>-admit(X) :--special(X), -highGPA(X), not ab_ineligible(X). interview(X) :-not eligible(X), not -eligible(X).</p><p>Note that ab_eligible/1 and ab_ineligible/1 represent realistic situations (a student with a high GPA but a criminal record, and a large donor's offspring with a low GPA, respectively, for example).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2.">Modeling Human Control</head><p>So far we have shown how (possibly incomplete) knowledge that resides in human mind (human logic) can be faithfully and declaratively represented as an answer set program. Human thinking also involves drawing inferences from this knowledge, as well as modifying this knowledge to suit our purposes. We should be able to model this process of drawing conclusions as well as possibly transforming our knowledge to achieve a goal. Similarly, we may combine the knowledge that resides in our mind in all sorts of ways to produce new knowledge. We need to understand and automate these processes as well.</p><p>Next, we give a (non-exhaustive) list of concepts that are employed in human control. These concepts allow us to draw inferences from knowledge, simplify our knowledge, combine our knowledge, etc. These concepts are also invoked during computational thinking. These concepts must also be taught to students so they can understand their own thinking process. The idea will be to illustrate these concepts to students by applying them to modify and transform knowledge represented as an answer set program. Our goal is to use the s(CASP) ASP interpreter to illustrate this transformation and processing in a concrete way.</p><p>• Deduction: Deduction is a logical reasoning process where conclusions are drawn from premises.</p><p>The conclusion logically follows from the premises. If the premises are true, the conclusion must also be true. Modus Ponens is an example of deductive reasoning: If P holds and 𝑃 ⇒ 𝑄 holds, we can conclude Q. Execution of a query against an answer set program involves performing deduction. Thus, given the program:</p><p>1 flies(X) :-bird(X), not exception(X).</p><p>2 exception(X) :-penguin(X).</p><p>3 bird(tweety).</p><p>we can deduce flies(tweety).</p><p>• Abduction: Abduction refers to a form of reasoning that is concerned with the generation and evaluation of explanatory hypotheses. We could also think of abduction as assumptions based reasoning where we find the assumptions under which an observation would hold. Abductive reasoning leads back from facts to a proposed explanation of those facts or assumptions that will explain that fact. Abductive reasoning takes the following form <ref type="bibr" target="#b15">[16]</ref>:</p><p>The fact B is observed. But if A were true, B would be a matter of course. Hence, there is reason to suspect that A is true.</p><p>Abductive reasoning can be modeled in ASP through even loops over negation, as explained earlier.</p><p>As an example, consider the rule:</p><p>1 flies(X) :-bird(X), not exception(X).</p><p>2 exception(X) :-not -penguin(X).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">bird(chirpy)</head><p>Suppose we are wondering whether the bird called chirpy flies. Notice that our judgement call if a bird can fly leans on the conservative side, meaning that we must demonstrate that chirpy is definitely not a penguin. We can add the rules:</p><p>1 -penguin(chirpy) :-not auxpenguin(chirpy). Now the query ?-flies(chirpy) will succeed with the assumption -penguin(chirpy), namely, chirpy should definitely not be a penguin. • Induction: Induction is a reasoning process in which general conclusions are drawn from specific observations or examples. Induction generally refers to learning associations or dependency relations between data features, in the sense of machine learning or inductive logic programming <ref type="bibr" target="#b16">[17]</ref>. A useful idiom may be to explain to students that humans make inductive generalizations from data. Inductive generalization may also come from a single observation or a small number of observations, though generally this generalization relies on human knowledge of the world. Humans represent inductive generalizations as default rules. Much of expert knowledge is representable as default rules <ref type="bibr" target="#b14">[15]</ref>. For example, a child may drop a ceramic mug on the floor which subsequently breaks. Perhaps after this happens a few times, the child may generalize and induce:</p><p>1 break(X) :-fragile(X), drop(X).</p><p>The child may subsequently notice that dropping the mug on a carpeted surface doesn't break it, and so may revise the rule above to add the exception.</p><p>1 break(X) :-mug(X), drop(X,Y), not exception(X,Y). Algorithms that learn rule based machine learning models from large amount of data and represent them as default rules have been designed <ref type="bibr" target="#b17">[18]</ref>. Finally, generalizing from just one or two instances of a predicate succeeding can be realized in s(CASP). Suppose we want to assert that if we can prove p(1) and p(2), then we can induce that p(X) holds for all X. In such a case as soon as both p(1) and p(2) are proved, then the existing knowledge is extended with the following rules:</p><p>1 :-p(1), p(2), X .&gt;. 2, not p(X).</p><p>2 p(X) :-X .&gt;. 2, not np(X).</p><p>3 np(X) :-not p(X).</p><p>where np(X) is a dummy predicate. The constraint asserts that if p(1) and p(2) succeed, then p(X) must succeed for any given X. The even loop over negation states that for any given value of X, p(X) must be either true or false. Note that we could have represented this inductive inference much more simply using deduction as follows:</p><p>1 p(X) :-X .&gt;. 2, p(1), p(2).</p><p>However, this representation is not making an inductive inference. In the former approach that involves a global constraint, we are closer to the human thought process, where if we discover that p(1) and p(2) hold, only then we infer that p(X) holds for all X. So if we encounter p(5) before we prove p(1) or p(2), then p(5) will fail. In the latter approach, a call to p(5) will lead to an attempt to prove p(1) and p(2), which is deduction not induction. • Resolution: Resolution can be thought of as hypothetical syllogism: if 𝑃 ⇒ 𝑄 and 𝑄 ⇒ 𝑅, then 𝑃 ⇒ 𝑅. That is, given ¬𝑃 ∨ 𝑄 and ¬𝑄 ∨ 𝑅, we infer that ¬𝑃 ∨ 𝑅 is a their logical consequence. Resolution can be used to realize backward and forward chaining discussed later. In logic programming, resolution appears as SLD resolution <ref type="bibr" target="#b18">[19]</ref>. Essentially, resolution corresponds to when a procedure call is made, and the call is matched to a rule head. Unification is used to achieve parameter passing. In s(CASP), coinductive success is another mechanism that is used alongside resolution. If a goal g is a variant of an ancestor goal in the search tree, then g succeeds coinductively. Coinductive success is critical for executing even loops over negation in a top-down, query driven manner. Resolution can also be thought of as a mechanism to derive new information (that was earlier implicit).</p><p>To illustrate resolution, we use the popularly-cited example: All Cretans are islanders and all islanders are liars, therefore, all Cretans are liars. Coded as:</p><p>1 liar(X) :-islander(X). ...(5)</p><p>2 islander(X) :-cretan(X). ... <ref type="bibr" target="#b5">(6)</ref> Simple reduction will generate the clause 1 liar(X) :-cretan(X). ... <ref type="bibr" target="#b6">(7)</ref> • Backward chaining: Backward chaining is a reasoning technique that starts with a goal or conclusion and works backward to determine the conditions or premises that would allow that goal to be true. In a backward chaining system, we start with a query, which is expanded using resolution (SLD resolution in case of pure logic programming), until all goals are resolved. In s(CASP), goals also get resolved due to coinductive success. The s(CASP) system keeps track of all the subgoals that are proved via resolution or coinduction while executing a query. The set of subgoals constitutes a partial answer set. Backward chaining is essentially query-driven execution. Thus, using the Cretan example above, if we add the fact 1 cretan(icarus). ... <ref type="bibr" target="#b7">(8)</ref> then the query ?-liar(icarus) will succeed through backward chaining (liar(icarus)→ islander(icarus) → cretan(icarus) → success. • Forward Chaining: Forward chaining is a reasoning method that combines facts/rules to infer new information, progressing step by step until a specific goal or conclusion is reached. It can be thought of as a method for combining knowledge to generate new inferred knowledge. In the example above, clause ( <ref type="formula">7</ref>) is obtained by forward chaining. In the context of logic programming, forward chaining can be thought of as partial evaluation <ref type="bibr" target="#b19">[20]</ref>. In s(CASP), the partial evaluation process is more complex, as coinduction also has to be taken into account. In addition, integrity constraints can lead to failure if they are not satisfied at any instance. In the example above, given the fact ( <ref type="formula">8</ref>), forward chaining applied to clauses ( <ref type="formula">5</ref>), <ref type="bibr" target="#b5">(6)</ref>, and (8) will produce the conclusion liar(icarus). Forward chaining is useful in making inferencing more efficient. • Craig Interpolation: For two formulae 𝑃 and 𝑄 such that 𝑃 ⇒ 𝑄, a Craig interpolant is a formula 𝐼 such that 𝑃 ⇒ 𝐼 and 𝐼 ⇒ 𝑄, and all the non logical symbols (i.e., atoms) in 𝐼 occur in both 𝑃 and 𝑄. Craig interpolation can be thought of as the opposite of resolution. One can also define the reverse interpolant. For a contradiction 𝑃 ∧ 𝑄 a reverse interpolant is a formula 𝐼 such that 𝑃 ⇒ 𝐼, and 𝐼 ∧ 𝑄 is a contradiction, and the non-logical symbols in 𝐼 occur in 𝑃 and in 𝑄. Intuitively, a reverse Craig interpolant of two inconsistent formulas 𝑃 and 𝑄 is the smallest formula containing common atoms of 𝑃 and 𝑄 that captures the inconsistency.</p><p>It is important for students to understand the idea of inconsistency among statements. Craig Interpolant captures this idea. If we state "No one is in the kitchen," then next state that "John is in the kitchen, " then these two statements are directly inconsistent. These mutually inconsistent statements can be part of larger set of statements. Reverse Craig interpolant corresponds to the smallest subset of statements that captures the inconsistency. Thus, given: in(maria,study),-in(X,kitchen) and in(john,kitchen),in(jill,living_room), the reverse interpolant is -in(X,kitchen) (X is universally quantified). • Causality: Causality is important for making sense of the world. We are constantly learning the causal relationships between events. We adopt the following definition of causality <ref type="bibr" target="#b20">[21]</ref>: event 𝑄 causally depends on 𝑃 if 𝑄 would have occurred if 𝑃 occured, and 𝑄 would not have occurred if 𝑃 had not occurred. It can be described by the relation: 𝑜𝑐𝑐𝑢𝑟𝑠(𝑃 ) ⇔ 𝑜𝑐𝑐𝑢𝑟𝑠(𝑄). We need to teach students to distinguish between causality and correlation.</p><p>In answer set programming, program clauses are "completed" by default, i.e., given clauses</p><formula xml:id="formula_1">1 p(𝑋 ¯) :-B 1 . 2 p(𝑋 ¯) :-B 2 .</formula><p>it is assumed that subgoals in the body of p, i.e., B 1 ∨ B 2 are the cause of p(𝑋 ¯). The program completion operation in s(CASP) results in the dual rule being added to the program:</p><formula xml:id="formula_2">not_p(𝑋 ¯) :-not B 1 , not B 2 .</formula><p>To illustrate, we know that a house floods if there is a water pipe leak, or that a house will also flood if there is torrential rain, then it follows that the house will not flood if there is no water leak and no torrential rain.  However, note that while program completion may appear to make the rules defining causal relationships, they are only "weakly" causal. A negation-as-failure goal not p states that there is no evidence for p being true, and so not p can be assumed to be true. So in the above example, if there is no evidence of torrential rain or water pipe leak, then there will be no evidence of house flooding. However, it is up to the user to assume that lack of a pipe leak and lack of torrential rain is sufficient evidence for house not flooding. If we want to express causality, we must use strong negation. Thus, to state that lack of rain and pipe leak is sufficient evidence, we must explicitly define the -house_floods predicate as follows:</p><p>1 -house_floods :--pipe_leak, -torrential_rain.</p><p>.... ( <ref type="formula">9</ref>)</p><p>If we have no information about pipe leak or torrential rain, then neither house_floods is provable nor -house_floods. Thus, whether the house got flooded remains unknown. However, we could make the close world assumption instead, by asserting the rule:</p><p>1 -house_floods :-not house_floods.</p><p>which amounts to:</p><p>1 -house_floods :-not pipe_leak, not torrential_rain.</p><p>If there is no evidence of rain and pipe leak, we can conclude that the house did not flood. Note that these examples can be executed using s(CASP) and the proof traces shown to students, improving their understanding of causality.  <ref type="bibr" target="#b21">[22]</ref>. This is because if event c causes event e, and we state the counterfactual that if c had not occurred then e would not have occurred, then we are declaring that event c is the cause of event e.</p><p>Counterfactuals can be modeled in ASP and s(CASP). Suppose we have an answer set program with p(𝑋 ¯) as the top-level goal. If we execute the query ?-p(𝑋 ¯) on s(CASP), then all possible worlds in which p(𝑋 ¯) holds will be generated by s(CASP) one by one. Note that s(CASP) generates just enough description of the world that is sufficient to prove the query (each partial world is guaranteed to be extensible to a complete consistent world). We can generate counterfactual worlds by issuing the query ?-not p(𝑋 ¯), which will systematically generate all the worlds in which p(𝑋 ¯) does not hold. These counterfactual worlds can be useful in improving student understanding of the program that they have develoepd.</p><p>Executing the negation of a query is very useful in case the positive query fails. The worlds generated for the negated query help one understand why the positive query failed, namely, what factor(s) contributed to the query's failure. This can help in debugging the logic developed for proving the query, as well as improve a student's understanding of the problem being modeled. • Constraint Relaxation: Constraint relaxation is employed by humans to arrive at a solution if there are so many constraints that there is no solution (solution space is empty). Thus, if we model our knowledge as an answer set program that is over-constrained, and we pose a query against such a program, then no answer will be produced. Note that there may be other reasons why an answer may not produced. For example, a query may fail due to incomplete knowledge. So over-constraining is not the only reason why a query may fail. If the query fails due to the program being over-constrained, then we may be interested in relaxing enough constraints such that the query will succeed. The s(CASP) system has a feature where the constraint that caused the top-level query to fail is output. This feature can help the user to interactively figure out the constraints that are causing failure. • Consistency Maintenance: Maintaining consistency is another strategy humans typically use in day to day life. Consistency is maintained by either relaxing constraints (discussed earlier), or making additional assumptions, or altering the premises (rules and facts).</p><p>A system is consistent if it has at least one model (at least one possible world, or one answer set). Often, we want to model a situation and we write the rules, but then we find that the system is inconsistent. We have already discussed how the s(CASP) system can be used to find the constraints and premises that are making our system inconsistent: by relaxing constraints and/or by computing the counterfactual worlds and examining them. Consistency may also be restored by making assumptions. As illustrated earlier, abduction can be used for this purpose. That is, if the absence of a fact p(𝑡 ¯) causes inconsistency, we can alternately assume that it is true or false, by adding the following even loop over negation:</p><p>1 p(𝑡 ¯) :-not n_p(𝑡 ¯).</p><p>2 n_p(𝑡 ¯) :-not p(𝑡 ¯).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Discussion</head><p>We argue in this paper that to teach logical thinking, not only the students must be taught knowledge representation in logic, but also the operational semantics of reasoning. Ideally, this operational semantics should be identical to that of human reasoning. We also argue that the goal-directed ASP system s(CASP) indeed follows an operational semantics that reflects how human reason. Most of the concepts that humans use for reasoning-deduction, abduction, induction, resolution, forward chaining, backward chaining, etc.-can be directly supported in s(CASP). The s(CASP) system supports both negation-as-failure and strong negation, as well as constructive negation. In fact, the s(CASP) system can produce a justification tree automatically for a given query <ref type="bibr" target="#b22">[23]</ref> that reflects the reasoning steps followed. This justification tree is really a proof tree. This justification tree closely corresponds to how a human would reason in their mind to prove, for example, that a given query holds. The use of justification tree can be a good way to show students individual steps taken during human reasoning. In addition, the modeling of various reasoning mechanisms used by humans can allow us to automate most human endeavors. For example, s(CASP)'s predecessor (s(ASP) <ref type="bibr" target="#b23">[24]</ref>) has been used to build the CHeF system <ref type="bibr" target="#b24">[25]</ref> that models a cardiologist's expertise for treating congestive heart failure. The reasoning used by cardiologists is expressed in about 100 page long guidelines developed by the American College of Cardiology. These guidelines <ref type="bibr" target="#b25">[26]</ref> are represented in ASP. The CheF system outperforms cardiologists <ref type="bibr" target="#b26">[27]</ref>, primarily because it does not suffer from human weaknesses such as a human cardiologist not realizing that a specific lab result changed since patient's last visit. Similarly, ASP technology allows us to answer natural language questions against a textual passage or a graphical image by invoking common sense knowledge <ref type="bibr" target="#b27">[28,</ref><ref type="bibr" target="#b28">29]</ref>. The system has also been used for automation of legal reasoning <ref type="bibr" target="#b29">[30]</ref> and to build reliable chatbots <ref type="bibr" target="#b30">[31]</ref>.</p><p>Significant amount of research has been invested in formalizing argumentation using logic programming and answer set programming <ref type="bibr" target="#b31">[32]</ref>. However, the logic-based modeling in all these approaches is based on propositions. In contrast, our goal is to be as general as possible. This means that we should handle predicates as well-like the s(CASP) system does. The argumentation literature studies complex argument structures. Our goal is to keep the illustration of human thinking simple-confine it to only default rules, integrity constraints, and assumption-based reasoning.</p><p>Significant work has also been done in informal logic <ref type="bibr" target="#b32">[33]</ref>. Similar to classical logic, work in informal logic is focused on inference rules (called arguments in the informal logic literature) and reasoning (proof). An argument is an attempt to present evidence for a conclusion (or a claim) and it relies on premises that support the conclusion <ref type="bibr" target="#b33">[34]</ref>. Informal logic can be mapped to logic programming and answer set programming and modeled with s(CASP) also <ref type="bibr" target="#b34">[35]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.">Conclusion and Future Work</head><p>Computational thinking is deemed as an important skill that every student should acquire. Computational thinking is essentially algorithmic thinking. Since "Algorithm = Logic + Control", we argue that to learn computational thinking, a student must learn human logic as well as human control. Human logic corresponds to knowledge. Thus, students must be taught how to represent knowledge. "Human control" corresponds to performing reasoning steps to draw conclusions, simplify/transform knowledge, fill in knowledge gaps, etc. We argue that ASP is an excellent formalism to represent "human logic", while the goal-directed predicate ASP system s(CASP) is excellent for illustrating "human control. " The work reported here is still in progress. Future work involves developing an extensive set of examples from daily life represented in ASP and the reasoning processes involved illustrated via s(CASP) to teach logical thinking to students. As we emphasize in the paper, we want to focus both on teaching students "human logic" as well as "human control. "</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>1</head><label></label><figDesc>prescribe(M, D, P) :-cures(M, D), not contraindicated(M, P). ...(1) 2 contraindicated(M, P) :-has_side_effects(M, P).</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>1</head><label></label><figDesc>prescribe(M, D, P) :-cures(M, D), not contraindicated(M, P). ...(3) 2 contraindicated(M, P) :-not -has_side_effects(M, P)....<ref type="bibr" target="#b3">(4)</ref> </figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>1</head><label></label><figDesc>prescribe(M, D, P) :-cures(M, D), -has_side_effect(M, P).</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>2</head><label></label><figDesc>exception(X) :-penguin(X).</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>1 g</head><label>1</label><figDesc>:-not not_g.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>2</head><label></label><figDesc>not_g :-not g.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_6"><head>4</head><label>4</label><figDesc></figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_7"><head>2</head><label></label><figDesc>auxpenguin(chirpy) :-not -penguin(chirpy).</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_8"><head>2</head><label></label><figDesc>exception(X,Y) :-soft_surface(Y).</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_9"><head>1 house_floods</head><label>1</label><figDesc></figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_10"><head>3</head><label></label><figDesc>not_house_floods :-not pipe_leak, not torrential_rain.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>•</head><label></label><figDesc>Counterfactuals: A counterfactual is a statement that considers what would have happened if a certain event or condition had been different from what actually occurred. It typically takes the form "If X had happened, Y would have occurred. " Counterfactuals can also capture causality</figDesc><table /></figure>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Computational thinking</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Wing</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Commun. ACM</title>
		<imprint>
			<biblScope unit="volume">49</biblScope>
			<biblScope unit="page" from="33" to="35" />
			<date type="published" when="2006">2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<title level="m" type="main">Logic for Problem Solving</title>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">A</forename><surname>Kowalski</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1979">1979</date>
			<pubPlace>North Holland</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">A</forename><surname>Kowalski</surname></persName>
		</author>
		<title level="m">Computational Logic and Human Thinking</title>
				<imprint>
			<publisher>Cambridge University Press</publisher>
			<date type="published" when="2011">2011</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Logic in Classical Indian Philosophy</title>
		<author>
			<persName><forename type="first">B</forename><surname>Gillon</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">The Stanford Encycl. of Philosophy</title>
				<imprint>
			<publisher>Stanford Univ</publisher>
			<date type="published" when="2016">2016. 2016</date>
		</imprint>
	</monogr>
	<note>Metaphysics Rsrch Lab</note>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Ancient Logic</title>
		<author>
			<persName><forename type="first">S</forename><surname>Bobzien</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">The Stanford Encyclopedia of Philosophy, Metaphysics Rsrch Lab</title>
				<editor>
			<persName><forename type="first">E</forename><forename type="middle">N</forename><surname>Zalta</surname></persName>
		</editor>
		<imprint>
			<publisher>Stanford Univ</publisher>
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<title level="m" type="main">An Investigation of the Laws of Thought</title>
		<author>
			<persName><forename type="first">G</forename><surname>Boole</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1854">1854</date>
			<publisher>Walton &amp; Maberly</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<author>
			<persName><forename type="first">G</forename><surname>Frege</surname></persName>
		</author>
		<title level="m">Grundlagen der Arithmetik</title>
				<imprint>
			<publisher>Wilhelm Koebner</publisher>
			<date type="published" when="1884">1884</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<ptr target="https://en.wikipedia.org/w/index.php?title=Computational_thinking&amp;oldid=1246452653" />
		<title level="m">Computational thinking -Wikipedia, the free encyclopedia</title>
				<imprint>
			<date type="published" when="2024-07-10">2024. 10-July-2024</date>
		</imprint>
	</monogr>
	<note>Wikipedia contributors</note>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">The Stable Model Semantics for Logic Programming</title>
		<author>
			<persName><forename type="first">M</forename><surname>Gelfond</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Lifschitz</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">5th International Conference on Logic Programming</title>
				<imprint>
			<date type="published" when="1988">1988</date>
			<biblScope unit="page" from="1070" to="1080" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Constraint answer set programming without grounding</title>
		<author>
			<persName><forename type="first">J</forename><surname>Arias</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Carro</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Salazar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Marple</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Gupta</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">TPLP</title>
		<imprint>
			<biblScope unit="volume">18</biblScope>
			<biblScope unit="page" from="337" to="354" />
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Mesolimbic dopamine release conveys causal associations</title>
		<author>
			<persName><forename type="first">H</forename><surname>Jeong</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Taylor</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">R</forename><surname>Floeder</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Lohmann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Mihalas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Wu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Zhou</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">A</forename><surname>Burke</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><forename type="middle">M K</forename><surname>Namboodiri</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Science</title>
		<imprint>
			<biblScope unit="volume">378</biblScope>
			<biblScope unit="page">6740</biblScope>
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<monogr>
		<title level="m" type="main">Automating common sense reasoning</title>
		<author>
			<persName><forename type="first">G</forename><surname>Gupta</surname></persName>
		</author>
		<ptr target="http://utdallas.edu/~gupta/csg,tutorialtalk" />
		<imprint>
			<date type="published" when="2020-07-07">July 7, 2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<monogr>
		<title level="m" type="main">Knowledge representation, reasoning and declarative problem solving</title>
		<author>
			<persName><forename type="first">C</forename></persName>
		</author>
		<imprint>
			<date type="published" when="2003">2003</date>
			<publisher>Cambridge University Press</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Answer set programming at a glance</title>
		<author>
			<persName><forename type="first">G</forename><surname>Brewka</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Eiter</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Truszczynski</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Commun. ACM</title>
		<imprint>
			<biblScope unit="volume">54</biblScope>
			<biblScope unit="page" from="92" to="103" />
			<date type="published" when="2011">2011</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<monogr>
		<title level="m" type="main">Knowledge representation, reasoning, and the design of intelligent agents: Answer Set Programming approach</title>
		<author>
			<persName><forename type="first">M</forename><surname>Gelfond</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Kahl</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2014">2014</date>
			<publisher>Cambridge Univ. Press</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">How many variables can humans process?</title>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">S</forename><surname>Halford</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Baker</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">E</forename><surname>Mccredden</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">D</forename><surname>Bain</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Psychological Science</title>
		<imprint>
			<biblScope unit="volume">16</biblScope>
			<biblScope unit="page" from="70" to="76" />
			<date type="published" when="2005">2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Inductive logic programming at 30: A new introduction</title>
		<author>
			<persName><forename type="first">A</forename><surname>Cropper</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Dumancic</surname></persName>
		</author>
		<idno type="DOI">10.1613/JAIR.1.13507</idno>
		<ptr target="https://doi.org/10.1613/jair.1.13507.doi:10.1613/JAIR.1.13507" />
	</analytic>
	<monogr>
		<title level="j">J. Artif. Intell. Res</title>
		<imprint>
			<biblScope unit="volume">74</biblScope>
			<biblScope unit="page" from="765" to="850" />
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<monogr>
		<title level="m" type="main">FOLD-R++: A toolset for automated inductive learning of default theories from mixed data</title>
		<author>
			<persName><forename type="first">H</forename><surname>Wang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Gupta</surname></persName>
		</author>
		<idno>CoRR abs/2110.07843</idno>
		<imprint>
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<monogr>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">W</forename><surname>Lloyd</surname></persName>
		</author>
		<title level="m">Foundations of Logic Programming</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="1987">1987</date>
		</imprint>
	</monogr>
	<note>2nd Edition</note>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">An introduction to partial evaluation</title>
		<author>
			<persName><forename type="first">N</forename><forename type="middle">D</forename><surname>Jones</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Comput. Surv</title>
		<imprint>
			<biblScope unit="volume">28</biblScope>
			<biblScope unit="page" from="480" to="503" />
			<date type="published" when="1996">1996</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<monogr>
		<ptr target="https://en.wikipedia.org/w/index.php?title=Causality&amp;oldid=1248883769" />
		<title level="m">Causality -Wikipedia, the free encyclopedia</title>
				<imprint>
			<date type="published" when="2024-10-10">2024. 10-October-2024</date>
		</imprint>
	</monogr>
	<note>Wikipedia contributors</note>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">Counterfactuals</title>
		<author>
			<persName><forename type="first">W</forename><surname>Starr</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">The Stanford Encyclopedia of Philosophy</title>
				<editor>
			<persName><forename type="first">E</forename><forename type="middle">N</forename><surname>Zalta</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">U</forename><surname>Nodelman</surname></persName>
		</editor>
		<meeting><address><addrLine>Winter</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2022">2022. 2022</date>
		</imprint>
		<respStmt>
			<orgName>Metaphysics Research Lab, Stanford University</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">Justifications for Goal-Directed Constraint Answer Set Programming</title>
		<author>
			<persName><forename type="first">J</forename><surname>Arias</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Carro</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Chen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Gupta</surname></persName>
		</author>
		<idno>ArXiv:2009.09158</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings 36th ICLP (Technical Communications)</title>
				<meeting>36th ICLP (Technical Communications)</meeting>
		<imprint>
			<publisher>EPTCS</publisher>
			<date type="published" when="2020">2020</date>
			<biblScope unit="volume">325</biblScope>
			<biblScope unit="page" from="59" to="72" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<monogr>
		<title level="m" type="main">Computing stable models of normal logic programs without grounding</title>
		<author>
			<persName><forename type="first">K</forename><surname>Marple</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Salazar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Gupta</surname></persName>
		</author>
		<idno type="arXiv">arXiv:1709.00501</idno>
		<imprint>
			<date type="published" when="2017">2017</date>
		</imprint>
	</monogr>
	<note type="report_type">arXiv preprint</note>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">A physician advisory system for chronic heart failure management based on knowledge patterns</title>
		<author>
			<persName><forename type="first">Z</forename><surname>Chen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Marple</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Salazar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Gupta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Tamil</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Theory Pract. Log. Program</title>
		<imprint>
			<biblScope unit="volume">16</biblScope>
			<biblScope unit="page" from="604" to="618" />
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<analytic>
		<title level="a" type="main">Accf/aha guideline for the management of heart failure</title>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">W</forename><surname>Yancey</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Jessup</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Circulation</title>
		<imprint>
			<biblScope unit="volume">28</biblScope>
			<biblScope unit="issue">16</biblScope>
			<biblScope unit="page" from="e240" to="e327" />
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<analytic>
		<title level="a" type="main">An ai-based heart failure treatment adviser system</title>
		<author>
			<persName><forename type="first">Z</forename><surname>Chen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Salzar</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE J. of Trans. Engg in Health &amp; Medicine</title>
		<imprint>
			<biblScope unit="volume">6</biblScope>
			<biblScope unit="page">2800810</biblScope>
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b27">
	<analytic>
		<title level="a" type="main">Knowledge-driven natural language understanding of english text and its applications</title>
		<author>
			<persName><forename type="first">K</forename><surname>Basu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">C</forename><surname>Varanasi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Shakerin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Arias</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Gupta</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. AAAI 2021</title>
				<meeting>AAAI 2021</meeting>
		<imprint>
			<publisher>AAAI Press</publisher>
			<biblScope unit="page" from="12554" to="12563" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b28">
	<analytic>
		<title level="a" type="main">Aqua: Asp-based visual question answering</title>
		<author>
			<persName><forename type="first">K</forename><surname>Basu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Shakerin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Gupta</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. PADL</title>
				<meeting>PADL<address><addrLine>Cham</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2020">2020</date>
			<biblScope unit="page" from="57" to="72" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b29">
	<analytic>
		<title level="a" type="main">Blawx: User-friendly goal-directed answer set programming for rules as code</title>
		<author>
			<persName><forename type="first">J</forename><surname>Morris</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. Prog. Lang. and the Law (ProLaLa)</title>
				<meeting>Prog. Lang. and the Law (ProLaLa)</meeting>
		<imprint>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b30">
	<analytic>
		<title level="a" type="main">Automated interactive domainspecific conversational agents that understand human dialogs</title>
		<author>
			<persName><forename type="first">Y</forename><surname>Zeng</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Rajasekharan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Padalkar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Basu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Arias</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Gupta</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Practical Aspects of Declarative Languages -26th International Symposium, PADL 2024</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">M</forename><surname>Gebser</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">I</forename><surname>Sergey</surname></persName>
		</editor>
		<meeting><address><addrLine>London, UK</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2024">January 15-16, 2024. 2024</date>
			<biblScope unit="volume">14512</biblScope>
			<biblScope unit="page" from="204" to="222" />
		</imprint>
	</monogr>
	<note>Proceedings</note>
</biblStruct>

<biblStruct xml:id="b31">
	<analytic>
		<title level="a" type="main">Logical theories and abstract argumentation: A survey of existing works</title>
		<author>
			<persName><forename type="first">P</forename><surname>Besnard</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Cayrol</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M.-C</forename><surname>Lagasquie-Schiex</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Argumentation and Computation</title>
		<imprint>
			<biblScope unit="volume">11</biblScope>
			<biblScope unit="issue">1-2</biblScope>
			<biblScope unit="page" from="41" to="102" />
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
	<note>????</note>
</biblStruct>

<biblStruct xml:id="b32">
	<analytic>
		<title level="a" type="main">Informal Logic</title>
		<author>
			<persName><forename type="first">L</forename><surname>Groarke</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">The Stanford Encycl. of Philosophy</title>
				<editor>
			<persName><forename type="first">E</forename><forename type="middle">N</forename><surname>Zalta</surname></persName>
		</editor>
		<imprint>
			<publisher>Stanford Univ</publisher>
			<date type="published" when="2020">spring 2020. 2020</date>
		</imprint>
	</monogr>
	<note>Metaphysics Rsrch Lab</note>
</biblStruct>

<biblStruct xml:id="b33">
	<monogr>
		<title level="m" type="main">A primer on argument</title>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">M</forename><surname>Holloway</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><forename type="middle">S</forename><surname>Wasson</surname></persName>
		</author>
		<ptr target="https://shemesh.larc.nasa.gov/people/cmh/cmhpubs.html" />
		<imprint>
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b34">
	<analytic>
		<title level="a" type="main">Formalizing informal logic and natural language deductivism</title>
		<author>
			<persName><forename type="first">G</forename><surname>Gupta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Varnasi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Basu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Chen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Salazar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Shakerin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Erbatur</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Li</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Wang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Arias</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Hall</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Driscoll</surname></persName>
		</author>
		<ptr target="https://ceur-ws.org/Vol-2970/gdepaper3.pdf" />
	</analytic>
	<monogr>
		<title level="m">Proc. GDE&apos;21 ICLP Workshop</title>
		<title level="s">CEUR Workshop Proceedings</title>
		<meeting>GDE&apos;21 ICLP Workshop</meeting>
		<imprint>
			<date type="published" when="2021">2970. 2021</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
