/*
* AbstractCharacter.java
*
* Created on Feb 2, 2009, 7:46:12 AM
*
* Description: Defines a character interface for a skill, in which the skill's virtue can be estabished and it's behavior
* explained.
*
* Copyright (C) Feb 2, 2009 Stephen L. Reed.
*
* This program is free software; you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with this program;
* if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package org.texai.ahcs.character;
import java.util.Set;
import net.jcip.annotations.NotThreadSafe;
/** Defines a character interface for a skill, in which the skill's virtue can be estabished and it's behavior
* explained.
*
* <p>
* Autonomous Military Robotics: Risk, Ethics, and Design (2009) Lin, Abney, and Bekey.
* http://ethics.calpoly.edu/ONR_report.pdf
* <blockquote>
* The challenge for the military will reside in preventing the development of lethal robotic systems
* from outstripping the ability of engineers to assure the safety of these systems. Implementing moral
* decision-making faculties within robots will proceed slowly. While there are aspects of moral
* judgment that can be isolated and codified for tightly defined contexts, moral intelligence for
* autonomous entities is a complex activity dependent on the integration of a broad array of discrete
* skills. Robots initially will be built to perform specified tasks. However, as computer scientists learn
* to build more sophisticated systems that can analyze and accommodate the moral challenges posed
* by new contexts, autonomous robots can and will be deployed for a broad array of military
* applications. So for the foreseeable future and as a more reasonable goal, it seems best to attempt
* to program a virtuous partial character into a robot and ensure it only enters situations in which its
* character can function appropriately.
* </blockquote>
*
* @author Stephen L. Reed
*/
@NotThreadSafe
public interface Character {
/** Gets propositional statements representing the virtues of this skill.
*
* @return propositional statements representing the virtues of this skill
*/
Set<Virtue> getVirtues();
/** Gets an explanation of the given observed behavior.
*
* @param observedBehavior the given observed behavior
* @return an explanation of the given observed behavior
*/
Rationale getRationale(final ObservedBehavior observedBehavior);
/** Gets an explanation of the given proposed behavior.
*
* @param proposedBehavior the given proposed behavior
* @return an explanation of the given proposed behavior
*/
Rationale getRationale(final ProposedBehavior proposedBehavior);
}